package spynx.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper.UnorderedGroupState;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import spynx.services.DeslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalDeslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_VERBATIM_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'program'", "';'", "'reference'", "'pattern'", "':'", "'('", "','", "')'", "'const'", "'='", "'continue'", "'break'", "'return'", "'{'", "'}'", "'var'", "'optional'", "'locate'", "'for'", "'option'", "'using'", "'match'", "'arguments'", "'options'", "'minOccur'", "'maxOccur'", "'returnLastOccurrenceOnly'", "'input'", "'position'", "'globalPosition'", "'updateParentPosition'", "'if'", "'else'", "'foreach'", "'in'", "'while'", "'struct'", "'?'", "'evaluate'", "'statement'", "'&&'", "'||'", "'>'", "'<'", "'<='", "'>='", "'=='", "'!='", "'+'", "'-'", "'*'", "'/'", "'%'", "'<<'", "'>>'", "'!'", "'.'", "'['", "']'", "'@'", "'new'", "'execute'", "'job'", "'nameresolver'", "'ref'", "'null'", "'this'", "'begin'", "'end'", "'matchinfo'", "'class'", "'factory'", "'locator'", "'type'", "'::'", "'true'", "'false'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_STRING=5;
    public static final int RULE_VERBATIM_STRING=6;
    public static final int RULE_ANY_OTHER=11;
    public static final int RULE_INT=7;
    public static final int RULE_WS=10;
    public static final int RULE_SL_COMMENT=9;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=8;

        public InternalDeslParser(TokenStream input) {
            super(input);
            ruleMemo = new HashMap[214+1];
         }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g"; }



    /*
      This grammar contains a lot of empty actions to work around a bug in ANTLR.
      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
    */
     
     	private DeslGrammarAccess grammarAccess;
     	
        public InternalDeslParser(TokenStream input, IAstFactory factory, DeslGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("spynx/parser/antlr/internal/InternalDesl.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Program";	
       	}
       	
       	@Override
       	protected DeslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start entryRuleProgram
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:84:1: entryRuleProgram returns [EObject current=null] : iv_ruleProgram= ruleProgram EOF ;
    public final EObject entryRuleProgram() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProgram = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:85:2: (iv_ruleProgram= ruleProgram EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:86:2: iv_ruleProgram= ruleProgram EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getProgramRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProgram_in_entryRuleProgram81);
            iv_ruleProgram=ruleProgram();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleProgram; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProgram91); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleProgram


    // $ANTLR start ruleProgram
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:93:1: ruleProgram returns [EObject current=null] : ( 'program' ( (lv_name_1_0= RULE_ID ) ) ';' ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )* ( (lv_children_5_0= ruleDeclaration ) )* ) ;
    public final EObject ruleProgram() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:98:6: ( ( 'program' ( (lv_name_1_0= RULE_ID ) ) ';' ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )* ( (lv_children_5_0= ruleDeclaration ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:99:1: ( 'program' ( (lv_name_1_0= RULE_ID ) ) ';' ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )* ( (lv_children_5_0= ruleDeclaration ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:99:1: ( 'program' ( (lv_name_1_0= RULE_ID ) ) ';' ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )* ( (lv_children_5_0= ruleDeclaration ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:99:3: 'program' ( (lv_name_1_0= RULE_ID ) ) ';' ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )* ( (lv_children_5_0= ruleDeclaration ) )*
            {
            match(input,12,FollowSets000.FOLLOW_12_in_ruleProgram126); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getProgramAccess().getProgramKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:103:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:104:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:104:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:105:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleProgram143); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getProgramAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getProgramRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,13,FollowSets000.FOLLOW_13_in_ruleProgram158); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getProgramAccess().getSemicolonKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:131:1: ( ( (lv_children_3_0= ruleImportStatement ) ) ';' )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==14) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:131:2: ( (lv_children_3_0= ruleImportStatement ) ) ';'
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:131:2: ( (lv_children_3_0= ruleImportStatement ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:132:1: (lv_children_3_0= ruleImportStatement )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:132:1: (lv_children_3_0= ruleImportStatement )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:133:3: lv_children_3_0= ruleImportStatement
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getProgramAccess().getChildrenImportStatementParserRuleCall_3_0_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleImportStatement_in_ruleProgram180);
            	    lv_children_3_0=ruleImportStatement();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getProgramRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"ImportStatement", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }

            	    match(input,13,FollowSets000.FOLLOW_13_in_ruleProgram190); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getProgramAccess().getSemicolonKeyword_3_1(), null); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:159:3: ( (lv_children_5_0= ruleDeclaration ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==15||LA2_0==20||LA2_0==81||(LA2_0>=84 && LA2_0<=85)) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:160:1: (lv_children_5_0= ruleDeclaration )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:160:1: (lv_children_5_0= ruleDeclaration )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:161:3: lv_children_5_0= ruleDeclaration
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getProgramAccess().getChildrenDeclarationParserRuleCall_4_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleDeclaration_in_ruleProgram213);
            	    lv_children_5_0=ruleDeclaration();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getProgramRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_5_0, 
            	      	        		"Declaration", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleProgram


    // $ANTLR start entryRuleDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:191:1: entryRuleDeclaration returns [EObject current=null] : iv_ruleDeclaration= ruleDeclaration EOF ;
    public final EObject entryRuleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeclaration = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:192:2: (iv_ruleDeclaration= ruleDeclaration EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:193:2: iv_ruleDeclaration= ruleDeclaration EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getDeclarationRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDeclaration_in_entryRuleDeclaration250);
            iv_ruleDeclaration=ruleDeclaration();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDeclaration260); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDeclaration


    // $ANTLR start ruleDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:200:1: ruleDeclaration returns [EObject current=null] : (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration ) ;
    public final EObject ruleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject this_PatternDeclaration_0 = null;

        EObject this_Proxies_1 = null;

        EObject this_ConstantDeclaration_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:205:6: ( (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:206:1: (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:206:1: (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 15:
                {
                alt3=1;
                }
                break;
            case 81:
            case 84:
            case 85:
                {
                alt3=2;
                }
                break;
            case 20:
                {
                alt3=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("206:1: (this_PatternDeclaration_0= rulePatternDeclaration | this_Proxies_1= ruleProxies | this_ConstantDeclaration_2= ruleConstantDeclaration )", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:207:2: this_PatternDeclaration_0= rulePatternDeclaration
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getDeclarationAccess().getPatternDeclarationParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_ruleDeclaration310);
                    this_PatternDeclaration_0=rulePatternDeclaration();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_PatternDeclaration_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:220:2: this_Proxies_1= ruleProxies
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getDeclarationAccess().getProxiesParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxies_in_ruleDeclaration340);
                    this_Proxies_1=ruleProxies();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_Proxies_1; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:233:2: this_ConstantDeclaration_2= ruleConstantDeclaration
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getDeclarationAccess().getConstantDeclarationParserRuleCall_2(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleConstantDeclaration_in_ruleDeclaration370);
                    this_ConstantDeclaration_2=ruleConstantDeclaration();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_ConstantDeclaration_2; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDeclaration


    // $ANTLR start entryRuleProxies
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:252:1: entryRuleProxies returns [EObject current=null] : iv_ruleProxies= ruleProxies EOF ;
    public final EObject entryRuleProxies() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProxies = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:253:2: (iv_ruleProxies= ruleProxies EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:254:2: iv_ruleProxies= ruleProxies EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getProxiesRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProxies_in_entryRuleProxies405);
            iv_ruleProxies=ruleProxies();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleProxies; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProxies415); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleProxies


    // $ANTLR start ruleProxies
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:261:1: ruleProxies returns [EObject current=null] : (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy ) ;
    public final EObject ruleProxies() throws RecognitionException {
        EObject current = null;

        EObject this_PatternMatchInfoProxy_0 = null;

        EObject this_LocatorProxy_1 = null;

        EObject this_TypeProxy_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:266:6: ( (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:267:1: (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:267:1: (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy )
            int alt4=3;
            switch ( input.LA(1) ) {
            case 81:
                {
                alt4=1;
                }
                break;
            case 84:
                {
                alt4=2;
                }
                break;
            case 85:
                {
                alt4=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("267:1: (this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy | this_LocatorProxy_1= ruleLocatorProxy | this_TypeProxy_2= ruleTypeProxy )", 4, 0, input);

                throw nvae;
            }

            switch (alt4) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:268:2: this_PatternMatchInfoProxy_0= rulePatternMatchInfoProxy
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getProxiesAccess().getPatternMatchInfoProxyParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternMatchInfoProxy_in_ruleProxies465);
                    this_PatternMatchInfoProxy_0=rulePatternMatchInfoProxy();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_PatternMatchInfoProxy_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:281:2: this_LocatorProxy_1= ruleLocatorProxy
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getProxiesAccess().getLocatorProxyParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLocatorProxy_in_ruleProxies495);
                    this_LocatorProxy_1=ruleLocatorProxy();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_LocatorProxy_1; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:294:2: this_TypeProxy_2= ruleTypeProxy
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getProxiesAccess().getTypeProxyParserRuleCall_2(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleTypeProxy_in_ruleProxies525);
                    this_TypeProxy_2=ruleTypeProxy();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_TypeProxy_2; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleProxies


    // $ANTLR start entryRuleImportStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:313:1: entryRuleImportStatement returns [EObject current=null] : iv_ruleImportStatement= ruleImportStatement EOF ;
    public final EObject entryRuleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:314:2: (iv_ruleImportStatement= ruleImportStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:315:2: iv_ruleImportStatement= ruleImportStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getImportStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleImportStatement_in_entryRuleImportStatement560);
            iv_ruleImportStatement=ruleImportStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleImportStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImportStatement570); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImportStatement


    // $ANTLR start ruleImportStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:322:1: ruleImportStatement returns [EObject current=null] : this_InclusionDeclaration_0= ruleInclusionDeclaration ;
    public final EObject ruleImportStatement() throws RecognitionException {
        EObject current = null;

        EObject this_InclusionDeclaration_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:327:6: (this_InclusionDeclaration_0= ruleInclusionDeclaration )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:329:2: this_InclusionDeclaration_0= ruleInclusionDeclaration
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getImportStatementAccess().getInclusionDeclarationParserRuleCall(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleInclusionDeclaration_in_ruleImportStatement619);
            this_InclusionDeclaration_0=ruleInclusionDeclaration();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_InclusionDeclaration_0; 
                      currentNode = currentNode.getParent();
                  
            }

            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImportStatement


    // $ANTLR start entryRuleInclusionDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:348:1: entryRuleInclusionDeclaration returns [EObject current=null] : iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF ;
    public final EObject entryRuleInclusionDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInclusionDeclaration = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:349:2: (iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:350:2: iv_ruleInclusionDeclaration= ruleInclusionDeclaration EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getInclusionDeclarationRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleInclusionDeclaration_in_entryRuleInclusionDeclaration653);
            iv_ruleInclusionDeclaration=ruleInclusionDeclaration();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleInclusionDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInclusionDeclaration663); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleInclusionDeclaration


    // $ANTLR start ruleInclusionDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:357:1: ruleInclusionDeclaration returns [EObject current=null] : ( 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleInclusionDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_importURI_1_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:362:6: ( ( 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:363:1: ( 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:363:1: ( 'reference' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:363:3: 'reference' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            match(input,14,FollowSets000.FOLLOW_14_in_ruleInclusionDeclaration698); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getInclusionDeclarationAccess().getReferenceKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:367:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:368:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:368:1: (lv_importURI_1_0= RULE_STRING )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:369:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)input.LT(1);
            match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleInclusionDeclaration715); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getInclusionDeclarationAccess().getImportURISTRINGTerminalRuleCall_1_0(), "importURI"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getInclusionDeclarationRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"importURI",
              	        		lv_importURI_1_0, 
              	        		"STRING", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleInclusionDeclaration


    // $ANTLR start entryRulePatternDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:399:1: entryRulePatternDeclaration returns [EObject current=null] : iv_rulePatternDeclaration= rulePatternDeclaration EOF ;
    public final EObject entryRulePatternDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternDeclaration = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:400:2: (iv_rulePatternDeclaration= rulePatternDeclaration EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:401:2: iv_rulePatternDeclaration= rulePatternDeclaration EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getPatternDeclarationRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_entryRulePatternDeclaration756);
            iv_rulePatternDeclaration=rulePatternDeclaration();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_rulePatternDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternDeclaration766); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePatternDeclaration


    // $ANTLR start rulePatternDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:408:1: rulePatternDeclaration returns [EObject current=null] : ( 'pattern' ( (lv_name_1_0= RULE_ID ) ) ( ':' ( ( ruleQualifiedID ) ) )? '(' ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? ')' ( (lv_children_9_0= ruleCompositeStatement ) )? ) ;
    public final EObject rulePatternDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        EObject lv_arguments_5_0 = null;

        EObject lv_arguments_7_0 = null;

        EObject lv_children_9_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:413:6: ( ( 'pattern' ( (lv_name_1_0= RULE_ID ) ) ( ':' ( ( ruleQualifiedID ) ) )? '(' ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? ')' ( (lv_children_9_0= ruleCompositeStatement ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:414:1: ( 'pattern' ( (lv_name_1_0= RULE_ID ) ) ( ':' ( ( ruleQualifiedID ) ) )? '(' ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? ')' ( (lv_children_9_0= ruleCompositeStatement ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:414:1: ( 'pattern' ( (lv_name_1_0= RULE_ID ) ) ( ':' ( ( ruleQualifiedID ) ) )? '(' ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? ')' ( (lv_children_9_0= ruleCompositeStatement ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:414:3: 'pattern' ( (lv_name_1_0= RULE_ID ) ) ( ':' ( ( ruleQualifiedID ) ) )? '(' ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )? ')' ( (lv_children_9_0= ruleCompositeStatement ) )?
            {
            match(input,15,FollowSets000.FOLLOW_15_in_rulePatternDeclaration801); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getPatternDeclarationAccess().getPatternKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:418:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:419:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:419:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:420:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rulePatternDeclaration818); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getPatternDeclarationAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getPatternDeclarationRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:442:2: ( ':' ( ( ruleQualifiedID ) ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==16) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:442:4: ':' ( ( ruleQualifiedID ) )
                    {
                    match(input,16,FollowSets000.FOLLOW_16_in_rulePatternDeclaration834); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getPatternDeclarationAccess().getColonKeyword_2_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:446:1: ( ( ruleQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:447:1: ( ruleQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:447:1: ( ruleQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:448:3: ruleQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      		  /* */ 
                      		
                    }
                    if ( backtracking==0 ) {

                      			if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternDeclarationRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                              
                    }
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternDeclarationAccess().getReturnTypePatternMatchInfoCrossReference_2_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_rulePatternDeclaration861);
                    ruleQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            match(input,17,FollowSets000.FOLLOW_17_in_rulePatternDeclaration873); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getPatternDeclarationAccess().getLeftParenthesisKeyword_3(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:469:1: ( ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )* )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( ((LA7_0>=RULE_ID && LA7_0<=RULE_INT)||LA7_0==17||LA7_0==25||(LA7_0>=33 && LA7_0<=34)||(LA7_0>=50 && LA7_0<=51)||LA7_0==67||(LA7_0>=71 && LA7_0<=80)||(LA7_0>=87 && LA7_0<=88)) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:469:2: ( (lv_arguments_5_0= ruleArgument ) ) ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )*
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:469:2: ( (lv_arguments_5_0= ruleArgument ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:470:1: (lv_arguments_5_0= ruleArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:470:1: (lv_arguments_5_0= ruleArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:471:3: lv_arguments_5_0= ruleArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternDeclarationAccess().getArgumentsArgumentParserRuleCall_4_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_rulePatternDeclaration895);
                    lv_arguments_5_0=ruleArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternDeclarationRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"arguments",
                      	        		lv_arguments_5_0, 
                      	        		"Argument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:493:2: ( ',' ( (lv_arguments_7_0= ruleArgument ) ) )*
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( (LA6_0==18) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:493:4: ',' ( (lv_arguments_7_0= ruleArgument ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_rulePatternDeclaration906); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getPatternDeclarationAccess().getCommaKeyword_4_1_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:497:1: ( (lv_arguments_7_0= ruleArgument ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:498:1: (lv_arguments_7_0= ruleArgument )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:498:1: (lv_arguments_7_0= ruleArgument )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:499:3: lv_arguments_7_0= ruleArgument
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getPatternDeclarationAccess().getArgumentsArgumentParserRuleCall_4_1_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_rulePatternDeclaration927);
                    	    lv_arguments_7_0=ruleArgument();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getPatternDeclarationRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"arguments",
                    	      	        		lv_arguments_7_0, 
                    	      	        		"Argument", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop6;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,19,FollowSets000.FOLLOW_19_in_rulePatternDeclaration941); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getPatternDeclarationAccess().getRightParenthesisKeyword_5(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:525:1: ( (lv_children_9_0= ruleCompositeStatement ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==25) ) {
                int LA8_1 = input.LA(2);

                if ( (synpred10()) ) {
                    alt8=1;
                }
            }
            switch (alt8) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:526:1: (lv_children_9_0= ruleCompositeStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:526:1: (lv_children_9_0= ruleCompositeStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:527:3: lv_children_9_0= ruleCompositeStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternDeclarationAccess().getChildrenCompositeStatementParserRuleCall_6_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration962);
                    lv_children_9_0=ruleCompositeStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternDeclarationRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_9_0, 
                      	        		"CompositeStatement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePatternDeclaration


    // $ANTLR start entryRuleConstantDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:557:1: entryRuleConstantDeclaration returns [EObject current=null] : iv_ruleConstantDeclaration= ruleConstantDeclaration EOF ;
    public final EObject entryRuleConstantDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstantDeclaration = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:558:2: (iv_ruleConstantDeclaration= ruleConstantDeclaration EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:559:2: iv_ruleConstantDeclaration= ruleConstantDeclaration EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getConstantDeclarationRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleConstantDeclaration_in_entryRuleConstantDeclaration999);
            iv_ruleConstantDeclaration=ruleConstantDeclaration();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleConstantDeclaration; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantDeclaration1009); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleConstantDeclaration


    // $ANTLR start ruleConstantDeclaration
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:566:1: ruleConstantDeclaration returns [EObject current=null] : ( 'const' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_value_3_0= ruleExpression ) ) ';' ) ;
    public final EObject ruleConstantDeclaration() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        EObject lv_value_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:571:6: ( ( 'const' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_value_3_0= ruleExpression ) ) ';' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:572:1: ( 'const' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_value_3_0= ruleExpression ) ) ';' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:572:1: ( 'const' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_value_3_0= ruleExpression ) ) ';' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:572:3: 'const' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_value_3_0= ruleExpression ) ) ';'
            {
            match(input,20,FollowSets000.FOLLOW_20_in_ruleConstantDeclaration1044); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getConstantDeclarationAccess().getConstKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:576:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:577:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:577:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:578:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleConstantDeclaration1061); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getConstantDeclarationAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getConstantDeclarationRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,21,FollowSets000.FOLLOW_21_in_ruleConstantDeclaration1076); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getConstantDeclarationAccess().getEqualsSignKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:604:1: ( (lv_value_3_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:605:1: (lv_value_3_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:605:1: (lv_value_3_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:606:3: lv_value_3_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getConstantDeclarationAccess().getValueExpressionParserRuleCall_3_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleConstantDeclaration1097);
            lv_value_3_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getConstantDeclarationRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"value",
              	        		lv_value_3_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,13,FollowSets000.FOLLOW_13_in_ruleConstantDeclaration1107); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getConstantDeclarationAccess().getSemicolonKeyword_4(), null); 
                  
            }

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleConstantDeclaration


    // $ANTLR start entryRuleStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:640:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:641:2: (iv_ruleStatement= ruleStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:642:2: iv_ruleStatement= ruleStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_entryRuleStatement1143);
            iv_ruleStatement=ruleStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStatement1153); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStatement


    // $ANTLR start ruleStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:649:1: ruleStatement returns [EObject current=null] : (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement ';' ) | (this_LocateStatement_3= ruleLocateStatement ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression ';' ) | this_LoopStatement_8= ruleLoopStatement | (this_EmptyStatement_9= ruleEmptyStatement ';' ) ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        EObject this_CompositeStatement_0 = null;

        EObject this_DeclarationStatement_1 = null;

        EObject this_LocateStatement_3 = null;

        EObject this_IfStatement_5 = null;

        EObject this_SimpleExpression_6 = null;

        EObject this_LoopStatement_8 = null;

        EObject this_EmptyStatement_9 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:654:6: ( (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement ';' ) | (this_LocateStatement_3= ruleLocateStatement ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression ';' ) | this_LoopStatement_8= ruleLoopStatement | (this_EmptyStatement_9= ruleEmptyStatement ';' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:655:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement ';' ) | (this_LocateStatement_3= ruleLocateStatement ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression ';' ) | this_LoopStatement_8= ruleLoopStatement | (this_EmptyStatement_9= ruleEmptyStatement ';' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:655:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement ';' ) | (this_LocateStatement_3= ruleLocateStatement ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression ';' ) | this_LoopStatement_8= ruleLoopStatement | (this_EmptyStatement_9= ruleEmptyStatement ';' ) )
            int alt9=7;
            switch ( input.LA(1) ) {
            case 25:
                {
                alt9=1;
                }
                break;
            case 27:
                {
                alt9=2;
                }
                break;
            case 28:
            case 29:
                {
                alt9=3;
                }
                break;
            case 43:
                {
                alt9=4;
                }
                break;
            case RULE_ID:
            case RULE_STRING:
            case RULE_VERBATIM_STRING:
            case RULE_INT:
            case 17:
            case 33:
            case 34:
            case 50:
            case 67:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 87:
            case 88:
                {
                alt9=5;
                }
                break;
            case 30:
            case 45:
            case 47:
                {
                alt9=6;
                }
                break;
            case 13:
                {
                alt9=7;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("655:1: (this_CompositeStatement_0= ruleCompositeStatement | (this_DeclarationStatement_1= ruleDeclarationStatement ';' ) | (this_LocateStatement_3= ruleLocateStatement ';' ) | this_IfStatement_5= ruleIfStatement | (this_SimpleExpression_6= ruleSimpleExpression ';' ) | this_LoopStatement_8= ruleLoopStatement | (this_EmptyStatement_9= ruleEmptyStatement ';' ) )", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:656:2: this_CompositeStatement_0= ruleCompositeStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getCompositeStatementParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_ruleStatement1203);
                    this_CompositeStatement_0=ruleCompositeStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_CompositeStatement_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:668:6: (this_DeclarationStatement_1= ruleDeclarationStatement ';' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:668:6: (this_DeclarationStatement_1= ruleDeclarationStatement ';' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:669:2: this_DeclarationStatement_1= ruleDeclarationStatement ';'
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getDeclarationStatementParserRuleCall_1_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleStatement1234);
                    this_DeclarationStatement_1=ruleDeclarationStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_DeclarationStatement_1; 
                              currentNode = currentNode.getParent();
                          
                    }
                    match(input,13,FollowSets000.FOLLOW_13_in_ruleStatement1243); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getStatementAccess().getSemicolonKeyword_1_1(), null); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:685:6: (this_LocateStatement_3= ruleLocateStatement ';' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:685:6: (this_LocateStatement_3= ruleLocateStatement ';' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:686:2: this_LocateStatement_3= ruleLocateStatement ';'
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getLocateStatementParserRuleCall_2_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLocateStatement_in_ruleStatement1276);
                    this_LocateStatement_3=ruleLocateStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_LocateStatement_3; 
                              currentNode = currentNode.getParent();
                          
                    }
                    match(input,13,FollowSets000.FOLLOW_13_in_ruleStatement1285); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getStatementAccess().getSemicolonKeyword_2_1(), null); 
                          
                    }

                    }


                    }
                    break;
                case 4 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:703:2: this_IfStatement_5= ruleIfStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getIfStatementParserRuleCall_3(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleIfStatement_in_ruleStatement1317);
                    this_IfStatement_5=ruleIfStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_IfStatement_5; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:715:6: (this_SimpleExpression_6= ruleSimpleExpression ';' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:715:6: (this_SimpleExpression_6= ruleSimpleExpression ';' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:716:2: this_SimpleExpression_6= ruleSimpleExpression ';'
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getSimpleExpressionParserRuleCall_4_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_ruleStatement1348);
                    this_SimpleExpression_6=ruleSimpleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_SimpleExpression_6; 
                              currentNode = currentNode.getParent();
                          
                    }
                    match(input,13,FollowSets000.FOLLOW_13_in_ruleStatement1357); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getStatementAccess().getSemicolonKeyword_4_1(), null); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:733:2: this_LoopStatement_8= ruleLoopStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getLoopStatementParserRuleCall_5(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLoopStatement_in_ruleStatement1389);
                    this_LoopStatement_8=ruleLoopStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_LoopStatement_8; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:745:6: (this_EmptyStatement_9= ruleEmptyStatement ';' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:745:6: (this_EmptyStatement_9= ruleEmptyStatement ';' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:746:2: this_EmptyStatement_9= ruleEmptyStatement ';'
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getStatementAccess().getEmptyStatementParserRuleCall_6_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleStatement1420);
                    this_EmptyStatement_9=ruleEmptyStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_EmptyStatement_9; 
                              currentNode = currentNode.getParent();
                          
                    }
                    match(input,13,FollowSets000.FOLLOW_13_in_ruleStatement1429); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getStatementAccess().getSemicolonKeyword_6_1(), null); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStatement


    // $ANTLR start entryRuleBlockSpecialStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:769:1: entryRuleBlockSpecialStatement returns [EObject current=null] : iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF ;
    public final EObject entryRuleBlockSpecialStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlockSpecialStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:770:2: (iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:771:2: iv_ruleBlockSpecialStatement= ruleBlockSpecialStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getBlockSpecialStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBlockSpecialStatement_in_entryRuleBlockSpecialStatement1466);
            iv_ruleBlockSpecialStatement=ruleBlockSpecialStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleBlockSpecialStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlockSpecialStatement1476); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBlockSpecialStatement


    // $ANTLR start ruleBlockSpecialStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:778:1: ruleBlockSpecialStatement returns [EObject current=null] : ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) ) ;
    public final EObject ruleBlockSpecialStatement() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_1=null;
        Token lv_name_1_2=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:783:6: ( ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:784:1: ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:784:1: ( () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:784:2: () ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:784:2: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:785:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getBlockSpecialStatementAccess().getSpecialStatementAction_0().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getBlockSpecialStatementAccess().getSpecialStatementAction_0(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:798:2: ( ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:799:1: ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:799:1: ( (lv_name_1_1= 'continue' | lv_name_1_2= 'break' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:800:1: (lv_name_1_1= 'continue' | lv_name_1_2= 'break' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:800:1: (lv_name_1_1= 'continue' | lv_name_1_2= 'break' )
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==22) ) {
                alt10=1;
            }
            else if ( (LA10_0==23) ) {
                alt10=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("800:1: (lv_name_1_1= 'continue' | lv_name_1_2= 'break' )", 10, 0, input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:801:3: lv_name_1_1= 'continue'
                    {
                    lv_name_1_1=(Token)input.LT(1);
                    match(input,22,FollowSets000.FOLLOW_22_in_ruleBlockSpecialStatement1533); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getBlockSpecialStatementAccess().getNameContinueKeyword_1_0_0(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getBlockSpecialStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_1_1, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:819:8: lv_name_1_2= 'break'
                    {
                    lv_name_1_2=(Token)input.LT(1);
                    match(input,23,FollowSets000.FOLLOW_23_in_ruleBlockSpecialStatement1562); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getBlockSpecialStatementAccess().getNameBreakKeyword_1_0_1(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getBlockSpecialStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_1_2, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBlockSpecialStatement


    // $ANTLR start entryRuleReturnStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:848:1: entryRuleReturnStatement returns [EObject current=null] : iv_ruleReturnStatement= ruleReturnStatement EOF ;
    public final EObject entryRuleReturnStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturnStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:849:2: (iv_ruleReturnStatement= ruleReturnStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:850:2: iv_ruleReturnStatement= ruleReturnStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getReturnStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement1614);
            iv_ruleReturnStatement=ruleReturnStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleReturnStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleReturnStatement1624); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleReturnStatement


    // $ANTLR start ruleReturnStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:857:1: ruleReturnStatement returns [EObject current=null] : ( ( (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) )? ) ;
    public final EObject ruleReturnStatement() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_children_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:862:6: ( ( ( (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:863:1: ( ( (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:863:1: ( ( (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:863:2: ( (lv_name_0_0= 'return' ) ) ( (lv_children_1_0= ruleExpression ) )?
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:863:2: ( (lv_name_0_0= 'return' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:864:1: (lv_name_0_0= 'return' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:864:1: (lv_name_0_0= 'return' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:865:3: lv_name_0_0= 'return'
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,24,FollowSets000.FOLLOW_24_in_ruleReturnStatement1667); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getReturnStatementAccess().getNameReturnKeyword_0_0(), "name"); 
                  
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getReturnStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        
              	        try {
              	       		set(current, "name", lv_name_0_0, "return", lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:884:2: ( (lv_children_1_0= ruleExpression ) )?
            int alt11=2;
            switch ( input.LA(1) ) {
                case 67:
                    {
                    int LA11_1 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case RULE_STRING:
                    {
                    int LA11_2 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case RULE_VERBATIM_STRING:
                    {
                    int LA11_3 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case RULE_INT:
                    {
                    int LA11_4 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 71:
                    {
                    int LA11_5 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case RULE_ID:
                    {
                    int LA11_6 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 78:
                    {
                    int LA11_7 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 79:
                    {
                    int LA11_8 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 80:
                    {
                    int LA11_9 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 34:
                    {
                    int LA11_10 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 17:
                    {
                    int LA11_11 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 72:
                    {
                    int LA11_12 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 50:
                    {
                    int LA11_13 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 73:
                    {
                    int LA11_14 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 74:
                    {
                    int LA11_15 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 75:
                    {
                    int LA11_16 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 76:
                    {
                    int LA11_17 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 77:
                    {
                    int LA11_18 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 87:
                    {
                    int LA11_19 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 88:
                    {
                    int LA11_20 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 33:
                    {
                    int LA11_21 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 25:
                    {
                    int LA11_22 = input.LA(2);

                    if ( (synpred18()) ) {
                        alt11=1;
                    }
                    }
                    break;
                case 51:
                    {
                    alt11=1;
                    }
                    break;
            }

            switch (alt11) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:885:1: (lv_children_1_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:885:1: (lv_children_1_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:886:3: lv_children_1_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getReturnStatementAccess().getChildrenExpressionParserRuleCall_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleReturnStatement1701);
                    lv_children_1_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getReturnStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_1_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleReturnStatement


    // $ANTLR start entryRuleEmptyStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:916:1: entryRuleEmptyStatement returns [EObject current=null] : iv_ruleEmptyStatement= ruleEmptyStatement EOF ;
    public final EObject entryRuleEmptyStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEmptyStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:917:2: (iv_ruleEmptyStatement= ruleEmptyStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:918:2: iv_ruleEmptyStatement= ruleEmptyStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getEmptyStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_entryRuleEmptyStatement1738);
            iv_ruleEmptyStatement=ruleEmptyStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleEmptyStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEmptyStatement1748); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleEmptyStatement


    // $ANTLR start ruleEmptyStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:925:1: ruleEmptyStatement returns [EObject current=null] : () ;
    public final EObject ruleEmptyStatement() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:930:6: ( () )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:931:1: ()
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:931:1: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:932:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getEmptyStatementAccess().getStatementAction().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getEmptyStatementAccess().getStatementAction(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
        finally {
        }
        return current;
    }
    // $ANTLR end ruleEmptyStatement


    // $ANTLR start entryRuleCompositeStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:953:1: entryRuleCompositeStatement returns [EObject current=null] : iv_ruleCompositeStatement= ruleCompositeStatement EOF ;
    public final EObject entryRuleCompositeStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompositeStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:954:2: (iv_ruleCompositeStatement= ruleCompositeStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:955:2: iv_ruleCompositeStatement= ruleCompositeStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getCompositeStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_entryRuleCompositeStatement1819);
            iv_ruleCompositeStatement=ruleCompositeStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleCompositeStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleCompositeStatement1829); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleCompositeStatement


    // $ANTLR start ruleCompositeStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:962:1: ruleCompositeStatement returns [EObject current=null] : ( () '{' ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* '}' ) ;
    public final EObject ruleCompositeStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_children_2_1 = null;

        EObject lv_children_2_2 = null;

        EObject lv_children_2_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:967:6: ( ( () '{' ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* '}' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:968:1: ( () '{' ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* '}' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:968:1: ( () '{' ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* '}' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:968:2: () '{' ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )* '}'
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:968:2: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:969:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getCompositeStatementAccess().getStatementAction_0().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getCompositeStatementAccess().getStatementAction_0(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }

            match(input,25,FollowSets000.FOLLOW_25_in_ruleCompositeStatement1876); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getCompositeStatementAccess().getLeftCurlyBracketKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:986:1: ( ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) ) )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( ((LA13_0>=RULE_ID && LA13_0<=RULE_INT)||LA13_0==13||LA13_0==17||(LA13_0>=22 && LA13_0<=25)||(LA13_0>=27 && LA13_0<=30)||(LA13_0>=33 && LA13_0<=34)||LA13_0==43||LA13_0==45||LA13_0==47||LA13_0==50||LA13_0==67||(LA13_0>=71 && LA13_0<=80)||(LA13_0>=87 && LA13_0<=88)) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:987:1: ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:987:1: ( (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:988:1: (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:988:1: (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement )
            	    int alt12=3;
            	    switch ( input.LA(1) ) {
            	    case RULE_ID:
            	    case RULE_STRING:
            	    case RULE_VERBATIM_STRING:
            	    case RULE_INT:
            	    case 13:
            	    case 17:
            	    case 25:
            	    case 27:
            	    case 28:
            	    case 29:
            	    case 30:
            	    case 33:
            	    case 34:
            	    case 43:
            	    case 45:
            	    case 47:
            	    case 50:
            	    case 67:
            	    case 71:
            	    case 72:
            	    case 73:
            	    case 74:
            	    case 75:
            	    case 76:
            	    case 77:
            	    case 78:
            	    case 79:
            	    case 80:
            	    case 87:
            	    case 88:
            	        {
            	        alt12=1;
            	        }
            	        break;
            	    case 24:
            	        {
            	        alt12=2;
            	        }
            	        break;
            	    case 22:
            	    case 23:
            	        {
            	        alt12=3;
            	        }
            	        break;
            	    default:
            	        if (backtracking>0) {failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("988:1: (lv_children_2_1= ruleStatement | lv_children_2_2= ruleReturnStatement | lv_children_2_3= ruleBlockSpecialStatement )", 12, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt12) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:989:3: lv_children_2_1= ruleStatement
            	            {
            	            if ( backtracking==0 ) {
            	               
            	              	        currentNode=createCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenStatementParserRuleCall_2_0_0(), currentNode); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleCompositeStatement1899);
            	            lv_children_2_1=ruleStatement();
            	            _fsp--;
            	            if (failed) return current;
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getCompositeStatementRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode.getParent(), current);
            	              	        }
            	              	        try {
            	              	       		add(
            	              	       			current, 
            	              	       			"children",
            	              	        		lv_children_2_1, 
            	              	        		"Statement", 
            	              	        		currentNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	        currentNode = currentNode.getParent();
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1010:8: lv_children_2_2= ruleReturnStatement
            	            {
            	            if ( backtracking==0 ) {
            	               
            	              	        currentNode=createCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenReturnStatementParserRuleCall_2_0_1(), currentNode); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleReturnStatement_in_ruleCompositeStatement1918);
            	            lv_children_2_2=ruleReturnStatement();
            	            _fsp--;
            	            if (failed) return current;
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getCompositeStatementRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode.getParent(), current);
            	              	        }
            	              	        try {
            	              	       		add(
            	              	       			current, 
            	              	       			"children",
            	              	        		lv_children_2_2, 
            	              	        		"ReturnStatement", 
            	              	        		currentNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	        currentNode = currentNode.getParent();
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1031:8: lv_children_2_3= ruleBlockSpecialStatement
            	            {
            	            if ( backtracking==0 ) {
            	               
            	              	        currentNode=createCompositeNode(grammarAccess.getCompositeStatementAccess().getChildrenBlockSpecialStatementParserRuleCall_2_0_2(), currentNode); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleBlockSpecialStatement_in_ruleCompositeStatement1937);
            	            lv_children_2_3=ruleBlockSpecialStatement();
            	            _fsp--;
            	            if (failed) return current;
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getCompositeStatementRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode.getParent(), current);
            	              	        }
            	              	        try {
            	              	       		add(
            	              	       			current, 
            	              	       			"children",
            	              	        		lv_children_2_3, 
            	              	        		"BlockSpecialStatement", 
            	              	        		currentNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	        currentNode = currentNode.getParent();
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);

            match(input,26,FollowSets000.FOLLOW_26_in_ruleCompositeStatement1951); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getCompositeStatementAccess().getRightCurlyBracketKeyword_3(), null); 
                  
            }

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleCompositeStatement


    // $ANTLR start entryRuleDeclarationStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1067:1: entryRuleDeclarationStatement returns [EObject current=null] : iv_ruleDeclarationStatement= ruleDeclarationStatement EOF ;
    public final EObject entryRuleDeclarationStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeclarationStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1068:2: (iv_ruleDeclarationStatement= ruleDeclarationStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1069:2: iv_ruleDeclarationStatement= ruleDeclarationStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getDeclarationStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_entryRuleDeclarationStatement1987);
            iv_ruleDeclarationStatement=ruleDeclarationStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleDeclarationStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDeclarationStatement1997); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDeclarationStatement


    // $ANTLR start ruleDeclarationStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1076:1: ruleDeclarationStatement returns [EObject current=null] : ( 'var' ( (lv_children_1_0= ruleVarEntry ) ) ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )* ) ;
    public final EObject ruleDeclarationStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_children_1_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1081:6: ( ( 'var' ( (lv_children_1_0= ruleVarEntry ) ) ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1082:1: ( 'var' ( (lv_children_1_0= ruleVarEntry ) ) ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1082:1: ( 'var' ( (lv_children_1_0= ruleVarEntry ) ) ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1082:3: 'var' ( (lv_children_1_0= ruleVarEntry ) ) ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )*
            {
            match(input,27,FollowSets000.FOLLOW_27_in_ruleDeclarationStatement2032); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getDeclarationStatementAccess().getVarKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1086:1: ( (lv_children_1_0= ruleVarEntry ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1087:1: (lv_children_1_0= ruleVarEntry )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1087:1: (lv_children_1_0= ruleVarEntry )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1088:3: lv_children_1_0= ruleVarEntry
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getDeclarationStatementAccess().getChildrenVarEntryParserRuleCall_1_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_ruleDeclarationStatement2053);
            lv_children_1_0=ruleVarEntry();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getDeclarationStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		add(
              	       			current, 
              	       			"children",
              	        		lv_children_1_0, 
              	        		"VarEntry", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1110:2: ( ',' ( (lv_children_3_0= ruleVarEntry ) ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==18) ) {
                    int LA14_2 = input.LA(2);

                    if ( (LA14_2==RULE_ID) ) {
                        int LA14_3 = input.LA(3);

                        if ( (synpred22()) ) {
                            alt14=1;
                        }


                    }


                }


                switch (alt14) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1110:4: ',' ( (lv_children_3_0= ruleVarEntry ) )
            	    {
            	    match(input,18,FollowSets000.FOLLOW_18_in_ruleDeclarationStatement2064); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getDeclarationStatementAccess().getCommaKeyword_2_0(), null); 
            	          
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1114:1: ( (lv_children_3_0= ruleVarEntry ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1115:1: (lv_children_3_0= ruleVarEntry )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1115:1: (lv_children_3_0= ruleVarEntry )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1116:3: lv_children_3_0= ruleVarEntry
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getDeclarationStatementAccess().getChildrenVarEntryParserRuleCall_2_1_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_ruleDeclarationStatement2085);
            	    lv_children_3_0=ruleVarEntry();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getDeclarationStatementRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"VarEntry", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDeclarationStatement


    // $ANTLR start entryRuleVarEntry
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1146:1: entryRuleVarEntry returns [EObject current=null] : iv_ruleVarEntry= ruleVarEntry EOF ;
    public final EObject entryRuleVarEntry() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVarEntry = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1147:2: (iv_ruleVarEntry= ruleVarEntry EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1148:2: iv_ruleVarEntry= ruleVarEntry EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getVarEntryRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_entryRuleVarEntry2123);
            iv_ruleVarEntry=ruleVarEntry();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleVarEntry; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVarEntry2133); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVarEntry


    // $ANTLR start ruleVarEntry
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1155:1: ruleVarEntry returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( '=' ( (lv_children_2_0= ruleExpression ) ) )? ) ;
    public final EObject ruleVarEntry() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_children_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1160:6: ( ( ( (lv_name_0_0= RULE_ID ) ) ( '=' ( (lv_children_2_0= ruleExpression ) ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1161:1: ( ( (lv_name_0_0= RULE_ID ) ) ( '=' ( (lv_children_2_0= ruleExpression ) ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1161:1: ( ( (lv_name_0_0= RULE_ID ) ) ( '=' ( (lv_children_2_0= ruleExpression ) ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1161:2: ( (lv_name_0_0= RULE_ID ) ) ( '=' ( (lv_children_2_0= ruleExpression ) ) )?
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1161:2: ( (lv_name_0_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1162:1: (lv_name_0_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1162:1: (lv_name_0_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1163:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleVarEntry2175); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getVarEntryAccess().getNameIDTerminalRuleCall_0_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getVarEntryRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_0_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1185:2: ( '=' ( (lv_children_2_0= ruleExpression ) ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==21) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1185:4: '=' ( (lv_children_2_0= ruleExpression ) )
                    {
                    match(input,21,FollowSets000.FOLLOW_21_in_ruleVarEntry2191); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getVarEntryAccess().getEqualsSignKeyword_1_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1189:1: ( (lv_children_2_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1190:1: (lv_children_2_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1190:1: (lv_children_2_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1191:3: lv_children_2_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getVarEntryAccess().getChildrenExpressionParserRuleCall_1_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleVarEntry2212);
                    lv_children_2_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVarEntryRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_2_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVarEntry


    // $ANTLR start entryRuleLocateStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1221:1: entryRuleLocateStatement returns [EObject current=null] : iv_ruleLocateStatement= ruleLocateStatement EOF ;
    public final EObject entryRuleLocateStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLocateStatement = null;


         
        		UnorderedGroupState myUnorderedGroupState = getUnorderedGroupHelper().snapShot(
        			grammarAccess.getLocateStatementAccess().getUnorderedGroup_3()
        		);
        	
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1227:2: (iv_ruleLocateStatement= ruleLocateStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1228:2: iv_ruleLocateStatement= ruleLocateStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getLocateStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLocateStatement_in_entryRuleLocateStatement2256);
            iv_ruleLocateStatement=ruleLocateStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleLocateStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocateStatement2266); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myUnorderedGroupState.restore();

        }
        return current;
    }
    // $ANTLR end entryRuleLocateStatement


    // $ANTLR start ruleLocateStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1238:1: ruleLocateStatement returns [EObject current=null] : ( ( (lv_optional_0_0= 'optional' ) )? 'locate' ( (lv_children_2_0= ruleUnamedArgument ) ) ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) ) ) ;
    public final EObject ruleLocateStatement() throws RecognitionException {
        EObject current = null;

        Token lv_optional_0_0=null;
        EObject lv_children_2_0 = null;

        AntlrDatatypeRuleToken lv_position_5_0 = null;

        EObject lv_flag_8_0 = null;

        EObject lv_children_12_0 = null;

        EObject lv_children_14_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
        		UnorderedGroupState myUnorderedGroupState = getUnorderedGroupHelper().snapShot(
        			grammarAccess.getLocateStatementAccess().getUnorderedGroup_3()
        		);
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1246:6: ( ( ( (lv_optional_0_0= 'optional' ) )? 'locate' ( (lv_children_2_0= ruleUnamedArgument ) ) ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1247:1: ( ( (lv_optional_0_0= 'optional' ) )? 'locate' ( (lv_children_2_0= ruleUnamedArgument ) ) ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1247:1: ( ( (lv_optional_0_0= 'optional' ) )? 'locate' ( (lv_children_2_0= ruleUnamedArgument ) ) ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1247:2: ( (lv_optional_0_0= 'optional' ) )? 'locate' ( (lv_children_2_0= ruleUnamedArgument ) ) ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1247:2: ( (lv_optional_0_0= 'optional' ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==28) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1248:1: (lv_optional_0_0= 'optional' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1248:1: (lv_optional_0_0= 'optional' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1249:3: lv_optional_0_0= 'optional'
                    {
                    lv_optional_0_0=(Token)input.LT(1);
                    match(input,28,FollowSets000.FOLLOW_28_in_ruleLocateStatement2313); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getLocateStatementAccess().getOptionalOptionalKeyword_0_0(), "optional"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "optional", true, "optional", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }
                    break;

            }

            match(input,29,FollowSets000.FOLLOW_29_in_ruleLocateStatement2337); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getLocateStatementAccess().getLocateKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1272:1: ( (lv_children_2_0= ruleUnamedArgument ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1273:1: (lv_children_2_0= ruleUnamedArgument )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1273:1: (lv_children_2_0= ruleUnamedArgument )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1274:3: lv_children_2_0= ruleUnamedArgument
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenUnamedArgumentParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleUnamedArgument_in_ruleLocateStatement2358);
            lv_children_2_0=ruleUnamedArgument();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		add(
              	       			current, 
              	       			"children",
              	        		lv_children_2_0, 
              	        		"UnamedArgument", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1296:2: ( ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1298:1: ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1298:1: ( ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1299:2: ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?)
            {
            getUnorderedGroupHelper().enter(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1302:2: ( ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?)
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1303:3: ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+ {...}?
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1303:3: ( ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) ) | ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) ) | ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) ) )+
            int cnt19=0;
            loop19:
            do {
                int alt19=4;
                int LA19_0 = input.LA(1);

                if ( LA19_0 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0) ) {
                    alt19=1;
                }
                else if ( LA19_0 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1) ) {
                    alt19=2;
                }
                else if ( LA19_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2) ) {
                    alt19=3;
                }


                switch (alt19) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1305:4: ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1305:4: ({...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1306:5: {...}? => ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0) ) {
            	        if (backtracking>0) {failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0)");
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1306:112: ( ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1307:6: ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0);
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1310:6: ( 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1310:8: 'for' ( (lv_position_5_0= rulePOSITION_CONSTANTS ) )
            	    {
            	    match(input,30,FollowSets000.FOLLOW_30_in_ruleLocateStatement2411); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getForKeyword_3_0_0(), null); 
            	          
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1314:1: ( (lv_position_5_0= rulePOSITION_CONSTANTS ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1315:1: (lv_position_5_0= rulePOSITION_CONSTANTS )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1315:1: (lv_position_5_0= rulePOSITION_CONSTANTS )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1316:3: lv_position_5_0= rulePOSITION_CONSTANTS
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getPositionPOSITION_CONSTANTSParserRuleCall_3_0_1_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_rulePOSITION_CONSTANTS_in_ruleLocateStatement2432);
            	    lv_position_5_0=rulePOSITION_CONSTANTS();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		set(
            	      	       			current, 
            	      	       			"position",
            	      	        		lv_position_5_0, 
            	      	        		"POSITION_CONSTANTS", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1345:4: ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1345:4: ({...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1346:5: {...}? => ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1) ) {
            	        if (backtracking>0) {failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1)");
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1346:112: ( ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1347:6: ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1);
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1350:6: ( 'option' '=' ( (lv_flag_8_0= ruleExpression ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1350:8: 'option' '=' ( (lv_flag_8_0= ruleExpression ) )
            	    {
            	    match(input,31,FollowSets000.FOLLOW_31_in_ruleLocateStatement2494); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getOptionKeyword_3_1_0(), null); 
            	          
            	    }
            	    match(input,21,FollowSets000.FOLLOW_21_in_ruleLocateStatement2504); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getEqualsSignKeyword_3_1_1(), null); 
            	          
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1358:1: ( (lv_flag_8_0= ruleExpression ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1359:1: (lv_flag_8_0= ruleExpression )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1359:1: (lv_flag_8_0= ruleExpression )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1360:3: lv_flag_8_0= ruleExpression
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getFlagExpressionParserRuleCall_3_1_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleLocateStatement2525);
            	    lv_flag_8_0=ruleExpression();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		set(
            	      	       			current, 
            	      	       			"flag",
            	      	        		lv_flag_8_0, 
            	      	        		"Expression", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1389:4: ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1389:4: ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1390:5: {...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2) ) {
            	        if (backtracking>0) {failed=true; return current;}
            	        throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2)");
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1390:112: ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1391:6: ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' )
            	    {
            	    getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2);
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1394:6: ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1394:8: 'using' ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )? ')'
            	    {
            	    match(input,32,FollowSets000.FOLLOW_32_in_ruleLocateStatement2587); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getUsingKeyword_3_2_0(), null); 
            	          
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1398:1: ( ( ruleQualifiedID ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1399:1: ( ruleQualifiedID )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1399:1: ( ruleQualifiedID )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1400:3: ruleQualifiedID
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      		  /* */ 
            	      		
            	    }
            	    if ( backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode, current);
            	      	        }
            	              
            	    }
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getLocatorLocatorProxyCrossReference_3_2_1_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleLocateStatement2614);
            	    ruleQualifiedID();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }

            	    match(input,17,FollowSets000.FOLLOW_17_in_ruleLocateStatement2624); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getLeftParenthesisKeyword_3_2_2(), null); 
            	          
            	    }
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:1: ( ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )* )?
            	    int alt18=2;
            	    int LA18_0 = input.LA(1);

            	    if ( ((LA18_0>=RULE_ID && LA18_0<=RULE_INT)||LA18_0==17||LA18_0==25||(LA18_0>=33 && LA18_0<=34)||(LA18_0>=50 && LA18_0<=51)||LA18_0==67||(LA18_0>=71 && LA18_0<=80)||(LA18_0>=87 && LA18_0<=88)) ) {
            	        alt18=1;
            	    }
            	    switch (alt18) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:2: ( (lv_children_12_0= ruleArgument ) ) ( ',' ( (lv_children_14_0= ruleArgument ) ) )*
            	            {
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:2: ( (lv_children_12_0= ruleArgument ) )
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1422:1: (lv_children_12_0= ruleArgument )
            	            {
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1422:1: (lv_children_12_0= ruleArgument )
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1423:3: lv_children_12_0= ruleArgument
            	            {
            	            if ( backtracking==0 ) {
            	               
            	              	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_0_0(), currentNode); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLocateStatement2646);
            	            lv_children_12_0=ruleArgument();
            	            _fsp--;
            	            if (failed) return current;
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode.getParent(), current);
            	              	        }
            	              	        try {
            	              	       		add(
            	              	       			current, 
            	              	       			"children",
            	              	        		lv_children_12_0, 
            	              	        		"Argument", 
            	              	        		currentNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	        currentNode = currentNode.getParent();
            	              	    
            	            }

            	            }


            	            }

            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1445:2: ( ',' ( (lv_children_14_0= ruleArgument ) ) )*
            	            loop17:
            	            do {
            	                int alt17=2;
            	                int LA17_0 = input.LA(1);

            	                if ( (LA17_0==18) ) {
            	                    alt17=1;
            	                }


            	                switch (alt17) {
            	            	case 1 :
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1445:4: ',' ( (lv_children_14_0= ruleArgument ) )
            	            	    {
            	            	    match(input,18,FollowSets000.FOLLOW_18_in_ruleLocateStatement2657); if (failed) return current;
            	            	    if ( backtracking==0 ) {

            	            	              createLeafNode(grammarAccess.getLocateStatementAccess().getCommaKeyword_3_2_3_1_0(), null); 
            	            	          
            	            	    }
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1449:1: ( (lv_children_14_0= ruleArgument ) )
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1450:1: (lv_children_14_0= ruleArgument )
            	            	    {
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1450:1: (lv_children_14_0= ruleArgument )
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1451:3: lv_children_14_0= ruleArgument
            	            	    {
            	            	    if ( backtracking==0 ) {
            	            	       
            	            	      	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_1_1_0(), currentNode); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleLocateStatement2678);
            	            	    lv_children_14_0=ruleArgument();
            	            	    _fsp--;
            	            	    if (failed) return current;
            	            	    if ( backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = factory.create(grammarAccess.getLocateStatementRule().getType().getClassifier());
            	            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	            	      	        }
            	            	      	        try {
            	            	      	       		add(
            	            	      	       			current, 
            	            	      	       			"children",
            	            	      	        		lv_children_14_0, 
            	            	      	        		"Argument", 
            	            	      	        		currentNode);
            	            	      	        } catch (ValueConverterException vce) {
            	            	      				handleValueConverterException(vce);
            	            	      	        }
            	            	      	        currentNode = currentNode.getParent();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop17;
            	                }
            	            } while (true);


            	            }
            	            break;

            	    }

            	    match(input,19,FollowSets000.FOLLOW_19_in_ruleLocateStatement2692); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getLocateStatementAccess().getRightParenthesisKeyword_3_2_4(), null); 
            	          
            	    }

            	    }

            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt19 >= 1 ) break loop19;
            	    if (backtracking>0) {failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(19, input);
                        throw eee;
                }
                cnt19++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3()) ) {
                if (backtracking>0) {failed=true; return current;}
                throw new FailedPredicateException(input, "ruleLocateStatement", "getUnorderedGroupHelper().canLeave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3())");
            }

            }


            }

            getUnorderedGroupHelper().leave(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3());

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myUnorderedGroupState.restore();

        }
        return current;
    }
    // $ANTLR end ruleLocateStatement


    // $ANTLR start entryRuleMatchStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1503:1: entryRuleMatchStatement returns [EObject current=null] : iv_ruleMatchStatement= ruleMatchStatement EOF ;
    public final EObject entryRuleMatchStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMatchStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1504:2: (iv_ruleMatchStatement= ruleMatchStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1505:2: iv_ruleMatchStatement= ruleMatchStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getMatchStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMatchStatement_in_entryRuleMatchStatement2778);
            iv_ruleMatchStatement=ruleMatchStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleMatchStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMatchStatement2788); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleMatchStatement


    // $ANTLR start ruleMatchStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1512:1: ruleMatchStatement returns [EObject current=null] : ( 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? ) ;
    public final EObject ruleMatchStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_pattern_1_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;

        EObject lv_children_7_0 = null;

        EObject lv_children_9_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1517:6: ( ( 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1518:1: ( 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1518:1: ( 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1518:3: 'match' ( (lv_pattern_1_0= rulePatternExpression ) ) ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )?
            {
            match(input,33,FollowSets000.FOLLOW_33_in_ruleMatchStatement2823); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getMatchStatementAccess().getMatchKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1522:1: ( (lv_pattern_1_0= rulePatternExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1523:1: (lv_pattern_1_0= rulePatternExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1523:1: (lv_pattern_1_0= rulePatternExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1524:3: lv_pattern_1_0= rulePatternExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getPatternPatternExpressionParserRuleCall_1_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_ruleMatchStatement2844);
            lv_pattern_1_0=rulePatternExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getMatchStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"pattern",
              	        		lv_pattern_1_0, 
              	        		"PatternExpression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1546:2: ( 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==34) ) {
                int LA21_1 = input.LA(2);

                if ( ((LA21_1>=RULE_ID && LA21_1<=RULE_INT)||LA21_1==25||(LA21_1>=33 && LA21_1<=34)||(LA21_1>=50 && LA21_1<=51)||LA21_1==67||(LA21_1>=71 && LA21_1<=80)||(LA21_1>=87 && LA21_1<=88)) ) {
                    alt21=1;
                }
                else if ( (LA21_1==17) ) {
                    int LA21_7 = input.LA(3);

                    if ( (synpred31()) ) {
                        alt21=1;
                    }
                }
            }
            switch (alt21) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1546:4: 'arguments' ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    {
                    match(input,34,FollowSets000.FOLLOW_34_in_ruleMatchStatement2855); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchStatementAccess().getArgumentsKeyword_2_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1550:1: ( (lv_children_3_0= ruleArgument ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1551:1: (lv_children_3_0= ruleArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1551:1: (lv_children_3_0= ruleArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1552:3: lv_children_3_0= ruleArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleMatchStatement2876);
                    lv_children_3_0=ruleArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_3_0, 
                      	        		"Argument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:2: ( ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    loop20:
                    do {
                        int alt20=2;
                        int LA20_0 = input.LA(1);

                        if ( (LA20_0==18) ) {
                            int LA20_2 = input.LA(2);

                            if ( (synpred30()) ) {
                                alt20=1;
                            }


                        }


                        switch (alt20) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:4: ',' ( (lv_children_5_0= ruleArgument ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleMatchStatement2887); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getMatchStatementAccess().getCommaKeyword_2_2_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1578:1: ( (lv_children_5_0= ruleArgument ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: (lv_children_5_0= ruleArgument )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: (lv_children_5_0= ruleArgument )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1580:3: lv_children_5_0= ruleArgument
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_2_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleMatchStatement2908);
                    	    lv_children_5_0=ruleArgument();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getMatchStatementRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"children",
                    	      	        		lv_children_5_0, 
                    	      	        		"Argument", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop20;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1602:6: ( 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )* )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==35) ) {
                int LA23_1 = input.LA(2);

                if ( (synpred33()) ) {
                    alt23=1;
                }
            }
            switch (alt23) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1602:8: 'options' ( (lv_children_7_0= ruleMatchOption ) ) ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )*
                    {
                    match(input,35,FollowSets000.FOLLOW_35_in_ruleMatchStatement2923); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchStatementAccess().getOptionsKeyword_3_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1606:1: ( (lv_children_7_0= ruleMatchOption ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1607:1: (lv_children_7_0= ruleMatchOption )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1607:1: (lv_children_7_0= ruleMatchOption )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1608:3: lv_children_7_0= ruleMatchOption
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_ruleMatchStatement2944);
                    lv_children_7_0=ruleMatchOption();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_7_0, 
                      	        		"MatchOption", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:2: ( ',' ( (lv_children_9_0= ruleMatchOption ) ) )*
                    loop22:
                    do {
                        int alt22=2;
                        int LA22_0 = input.LA(1);

                        if ( (LA22_0==18) ) {
                            int LA22_2 = input.LA(2);

                            if ( (synpred32()) ) {
                                alt22=1;
                            }


                        }


                        switch (alt22) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:4: ',' ( (lv_children_9_0= ruleMatchOption ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleMatchStatement2955); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getMatchStatementAccess().getCommaKeyword_3_2_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1634:1: ( (lv_children_9_0= ruleMatchOption ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: (lv_children_9_0= ruleMatchOption )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: (lv_children_9_0= ruleMatchOption )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1636:3: lv_children_9_0= ruleMatchOption
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_2_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_ruleMatchStatement2976);
                    	    lv_children_9_0=ruleMatchOption();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getMatchStatementRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"children",
                    	      	        		lv_children_9_0, 
                    	      	        		"MatchOption", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop22;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleMatchStatement


    // $ANTLR start entryRuleMatchOption
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1666:1: entryRuleMatchOption returns [EObject current=null] : iv_ruleMatchOption= ruleMatchOption EOF ;
    public final EObject entryRuleMatchOption() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMatchOption = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1667:2: (iv_ruleMatchOption= ruleMatchOption EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1668:2: iv_ruleMatchOption= ruleMatchOption EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getMatchOptionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_entryRuleMatchOption3016);
            iv_ruleMatchOption=ruleMatchOption();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleMatchOption; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMatchOption3026); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleMatchOption


    // $ANTLR start ruleMatchOption
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1675:1: ruleMatchOption returns [EObject current=null] : ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) ) '=' ( (lv_value_2_0= ruleExpression ) ) ) ;
    public final EObject ruleMatchOption() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_1=null;
        Token lv_name_0_2=null;
        Token lv_name_0_3=null;
        Token lv_name_0_4=null;
        Token lv_name_0_5=null;
        Token lv_name_0_6=null;
        Token lv_name_0_7=null;
        EObject lv_value_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1680:6: ( ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) ) '=' ( (lv_value_2_0= ruleExpression ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1681:1: ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) ) '=' ( (lv_value_2_0= ruleExpression ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1681:1: ( ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) ) '=' ( (lv_value_2_0= ruleExpression ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1681:2: ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) ) '=' ( (lv_value_2_0= ruleExpression ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1681:2: ( ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1682:1: ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1682:1: ( (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1683:1: (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1683:1: (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' )
            int alt24=7;
            switch ( input.LA(1) ) {
            case 36:
                {
                alt24=1;
                }
                break;
            case 37:
                {
                alt24=2;
                }
                break;
            case 38:
                {
                alt24=3;
                }
                break;
            case 39:
                {
                alt24=4;
                }
                break;
            case 40:
                {
                alt24=5;
                }
                break;
            case 41:
                {
                alt24=6;
                }
                break;
            case 42:
                {
                alt24=7;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("1683:1: (lv_name_0_1= 'minOccur' | lv_name_0_2= 'maxOccur' | lv_name_0_3= 'returnLastOccurrenceOnly' | lv_name_0_4= 'input' | lv_name_0_5= 'position' | lv_name_0_6= 'globalPosition' | lv_name_0_7= 'updateParentPosition' )", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1684:3: lv_name_0_1= 'minOccur'
                    {
                    lv_name_0_1=(Token)input.LT(1);
                    match(input,36,FollowSets000.FOLLOW_36_in_ruleMatchOption3071); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameMinOccurKeyword_0_0_0(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_1, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1702:8: lv_name_0_2= 'maxOccur'
                    {
                    lv_name_0_2=(Token)input.LT(1);
                    match(input,37,FollowSets000.FOLLOW_37_in_ruleMatchOption3100); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameMaxOccurKeyword_0_0_1(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_2, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1720:8: lv_name_0_3= 'returnLastOccurrenceOnly'
                    {
                    lv_name_0_3=(Token)input.LT(1);
                    match(input,38,FollowSets000.FOLLOW_38_in_ruleMatchOption3129); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameReturnLastOccurrenceOnlyKeyword_0_0_2(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_3, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 4 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1738:8: lv_name_0_4= 'input'
                    {
                    lv_name_0_4=(Token)input.LT(1);
                    match(input,39,FollowSets000.FOLLOW_39_in_ruleMatchOption3158); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameInputKeyword_0_0_3(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_4, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 5 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1756:8: lv_name_0_5= 'position'
                    {
                    lv_name_0_5=(Token)input.LT(1);
                    match(input,40,FollowSets000.FOLLOW_40_in_ruleMatchOption3187); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNamePositionKeyword_0_0_4(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_5, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 6 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1774:8: lv_name_0_6= 'globalPosition'
                    {
                    lv_name_0_6=(Token)input.LT(1);
                    match(input,41,FollowSets000.FOLLOW_41_in_ruleMatchOption3216); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameGlobalPositionKeyword_0_0_5(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_6, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 7 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1792:8: lv_name_0_7= 'updateParentPosition'
                    {
                    lv_name_0_7=(Token)input.LT(1);
                    match(input,42,FollowSets000.FOLLOW_42_in_ruleMatchOption3245); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getMatchOptionAccess().getNameUpdateParentPositionKeyword_0_0_6(), "name"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "name", lv_name_0_7, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;

            }


            }


            }

            match(input,21,FollowSets000.FOLLOW_21_in_ruleMatchOption3271); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getMatchOptionAccess().getEqualsSignKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1817:1: ( (lv_value_2_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1818:1: (lv_value_2_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1818:1: (lv_value_2_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1819:3: lv_value_2_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getMatchOptionAccess().getValueExpressionParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleMatchOption3292);
            lv_value_2_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getMatchOptionRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"value",
              	        		lv_value_2_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleMatchOption


    // $ANTLR start entryRuleIfStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1849:1: entryRuleIfStatement returns [EObject current=null] : iv_ruleIfStatement= ruleIfStatement EOF ;
    public final EObject entryRuleIfStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1850:2: (iv_ruleIfStatement= ruleIfStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1851:2: iv_ruleIfStatement= ruleIfStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getIfStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleIfStatement_in_entryRuleIfStatement3328);
            iv_ruleIfStatement=ruleIfStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleIfStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIfStatement3338); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleIfStatement


    // $ANTLR start ruleIfStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1858:1: ruleIfStatement returns [EObject current=null] : ( 'if' '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )? ) ;
    public final EObject ruleIfStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_condition_2_0 = null;

        EObject lv_trueStatement_4_0 = null;

        EObject lv_falseStatement_6_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1863:6: ( ( 'if' '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1864:1: ( 'if' '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1864:1: ( 'if' '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1864:3: 'if' '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_trueStatement_4_0= ruleStatement ) ) ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )?
            {
            match(input,43,FollowSets000.FOLLOW_43_in_ruleIfStatement3373); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getIfStatementAccess().getIfKeyword_0(), null); 
                  
            }
            match(input,17,FollowSets000.FOLLOW_17_in_ruleIfStatement3383); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getIfStatementAccess().getLeftParenthesisKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1872:1: ( (lv_condition_2_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1873:1: (lv_condition_2_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1873:1: (lv_condition_2_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1874:3: lv_condition_2_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getIfStatementAccess().getConditionExpressionParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleIfStatement3404);
            lv_condition_2_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getIfStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"condition",
              	        		lv_condition_2_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,19,FollowSets000.FOLLOW_19_in_ruleIfStatement3414); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getIfStatementAccess().getRightParenthesisKeyword_3(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1900:1: ( (lv_trueStatement_4_0= ruleStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1901:1: (lv_trueStatement_4_0= ruleStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1901:1: (lv_trueStatement_4_0= ruleStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1902:3: lv_trueStatement_4_0= ruleStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getIfStatementAccess().getTrueStatementStatementParserRuleCall_4_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleIfStatement3435);
            lv_trueStatement_4_0=ruleStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getIfStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"trueStatement",
              	        		lv_trueStatement_4_0, 
              	        		"Statement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1924:2: ( 'else' ( (lv_falseStatement_6_0= ruleStatement ) ) )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==44) ) {
                int LA25_1 = input.LA(2);

                if ( (synpred40()) ) {
                    alt25=1;
                }
            }
            switch (alt25) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1924:4: 'else' ( (lv_falseStatement_6_0= ruleStatement ) )
                    {
                    match(input,44,FollowSets000.FOLLOW_44_in_ruleIfStatement3446); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getIfStatementAccess().getElseKeyword_5_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1928:1: ( (lv_falseStatement_6_0= ruleStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1929:1: (lv_falseStatement_6_0= ruleStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1929:1: (lv_falseStatement_6_0= ruleStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1930:3: lv_falseStatement_6_0= ruleStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getIfStatementAccess().getFalseStatementStatementParserRuleCall_5_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleIfStatement3467);
                    lv_falseStatement_6_0=ruleStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getIfStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"falseStatement",
                      	        		lv_falseStatement_6_0, 
                      	        		"Statement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleIfStatement


    // $ANTLR start entryRuleLoopStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1960:1: entryRuleLoopStatement returns [EObject current=null] : iv_ruleLoopStatement= ruleLoopStatement EOF ;
    public final EObject entryRuleLoopStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLoopStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1961:2: (iv_ruleLoopStatement= ruleLoopStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1962:2: iv_ruleLoopStatement= ruleLoopStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getLoopStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLoopStatement_in_entryRuleLoopStatement3505);
            iv_ruleLoopStatement=ruleLoopStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleLoopStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLoopStatement3515); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleLoopStatement


    // $ANTLR start ruleLoopStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1969:1: ruleLoopStatement returns [EObject current=null] : (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement ) ;
    public final EObject ruleLoopStatement() throws RecognitionException {
        EObject current = null;

        EObject this_ForStatement_0 = null;

        EObject this_ForEachStatement_1 = null;

        EObject this_WhileStatement_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1974:6: ( (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1975:1: (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1975:1: (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement )
            int alt26=3;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt26=1;
                }
                break;
            case 45:
                {
                alt26=2;
                }
                break;
            case 47:
                {
                alt26=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("1975:1: (this_ForStatement_0= ruleForStatement | this_ForEachStatement_1= ruleForEachStatement | this_WhileStatement_2= ruleWhileStatement )", 26, 0, input);

                throw nvae;
            }

            switch (alt26) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1976:2: this_ForStatement_0= ruleForStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getLoopStatementAccess().getForStatementParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleForStatement_in_ruleLoopStatement3565);
                    this_ForStatement_0=ruleForStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_ForStatement_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1989:2: this_ForEachStatement_1= ruleForEachStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getLoopStatementAccess().getForEachStatementParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleForEachStatement_in_ruleLoopStatement3595);
                    this_ForEachStatement_1=ruleForEachStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_ForEachStatement_1; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2002:2: this_WhileStatement_2= ruleWhileStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getLoopStatementAccess().getWhileStatementParserRuleCall_2(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleWhileStatement_in_ruleLoopStatement3625);
                    this_WhileStatement_2=ruleWhileStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_WhileStatement_2; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleLoopStatement


    // $ANTLR start entryRuleForStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2021:1: entryRuleForStatement returns [EObject current=null] : iv_ruleForStatement= ruleForStatement EOF ;
    public final EObject entryRuleForStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2022:2: (iv_ruleForStatement= ruleForStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2023:2: iv_ruleForStatement= ruleForStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getForStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForStatement_in_entryRuleForStatement3660);
            iv_ruleForStatement=ruleForStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleForStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForStatement3670); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleForStatement


    // $ANTLR start ruleForStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2030:1: ruleForStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'for' ) ) '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) ';' ( (lv_condition_4_0= ruleExpression ) ) ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) ) ;
    public final EObject ruleForStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        EObject lv_initStatement_2_0 = null;

        EObject lv_condition_4_0 = null;

        EObject lv_postStatement_6_0 = null;

        EObject lv_bodyStatement_8_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2035:6: ( ( ( (lv_loopType_0_0= 'for' ) ) '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) ';' ( (lv_condition_4_0= ruleExpression ) ) ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2036:1: ( ( (lv_loopType_0_0= 'for' ) ) '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) ';' ( (lv_condition_4_0= ruleExpression ) ) ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2036:1: ( ( (lv_loopType_0_0= 'for' ) ) '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) ';' ( (lv_condition_4_0= ruleExpression ) ) ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) ')' ( (lv_bodyStatement_8_0= ruleStatement ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2036:2: ( (lv_loopType_0_0= 'for' ) ) '(' ( (lv_initStatement_2_0= ruleForInitStatement ) ) ';' ( (lv_condition_4_0= ruleExpression ) ) ';' ( (lv_postStatement_6_0= ruleForPostStatement ) ) ')' ( (lv_bodyStatement_8_0= ruleStatement ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2036:2: ( (lv_loopType_0_0= 'for' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2037:1: (lv_loopType_0_0= 'for' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2037:1: (lv_loopType_0_0= 'for' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2038:3: lv_loopType_0_0= 'for'
            {
            lv_loopType_0_0=(Token)input.LT(1);
            match(input,30,FollowSets000.FOLLOW_30_in_ruleForStatement3713); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForStatementAccess().getLoopTypeForKeyword_0_0(), "loopType"); 
                  
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        
              	        try {
              	       		set(current, "loopType", lv_loopType_0_0, "for", lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,17,FollowSets000.FOLLOW_17_in_ruleForStatement3736); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForStatementAccess().getLeftParenthesisKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2061:1: ( (lv_initStatement_2_0= ruleForInitStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2062:1: (lv_initStatement_2_0= ruleForInitStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2062:1: (lv_initStatement_2_0= ruleForInitStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2063:3: lv_initStatement_2_0= ruleForInitStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForStatementAccess().getInitStatementForInitStatementParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleForInitStatement_in_ruleForStatement3757);
            lv_initStatement_2_0=ruleForInitStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"initStatement",
              	        		lv_initStatement_2_0, 
              	        		"ForInitStatement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,13,FollowSets000.FOLLOW_13_in_ruleForStatement3767); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForStatementAccess().getSemicolonKeyword_3(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2089:1: ( (lv_condition_4_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2090:1: (lv_condition_4_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2090:1: (lv_condition_4_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2091:3: lv_condition_4_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForStatementAccess().getConditionExpressionParserRuleCall_4_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleForStatement3788);
            lv_condition_4_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"condition",
              	        		lv_condition_4_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,13,FollowSets000.FOLLOW_13_in_ruleForStatement3798); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForStatementAccess().getSemicolonKeyword_5(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2117:1: ( (lv_postStatement_6_0= ruleForPostStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2118:1: (lv_postStatement_6_0= ruleForPostStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2118:1: (lv_postStatement_6_0= ruleForPostStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2119:3: lv_postStatement_6_0= ruleForPostStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForStatementAccess().getPostStatementForPostStatementParserRuleCall_6_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleForPostStatement_in_ruleForStatement3819);
            lv_postStatement_6_0=ruleForPostStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"postStatement",
              	        		lv_postStatement_6_0, 
              	        		"ForPostStatement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,19,FollowSets000.FOLLOW_19_in_ruleForStatement3829); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForStatementAccess().getRightParenthesisKeyword_7(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2145:1: ( (lv_bodyStatement_8_0= ruleStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2146:1: (lv_bodyStatement_8_0= ruleStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2146:1: (lv_bodyStatement_8_0= ruleStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2147:3: lv_bodyStatement_8_0= ruleStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForStatementAccess().getBodyStatementStatementParserRuleCall_8_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleForStatement3850);
            lv_bodyStatement_8_0=ruleStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"bodyStatement",
              	        		lv_bodyStatement_8_0, 
              	        		"Statement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleForStatement


    // $ANTLR start entryRuleForEachStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2177:1: entryRuleForEachStatement returns [EObject current=null] : iv_ruleForEachStatement= ruleForEachStatement EOF ;
    public final EObject entryRuleForEachStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForEachStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2178:2: (iv_ruleForEachStatement= ruleForEachStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2179:2: iv_ruleForEachStatement= ruleForEachStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getForEachStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForEachStatement_in_entryRuleForEachStatement3886);
            iv_ruleForEachStatement=ruleForEachStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleForEachStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForEachStatement3896); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleForEachStatement


    // $ANTLR start ruleForEachStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2186:1: ruleForEachStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'foreach' ) ) '(' 'var' ( (lv_controlVar_3_0= RULE_ID ) ) 'in' ( (lv_condition_5_0= ruleExpression ) ) ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) ) ;
    public final EObject ruleForEachStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        Token lv_controlVar_3_0=null;
        EObject lv_condition_5_0 = null;

        EObject lv_bodyStatement_7_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2191:6: ( ( ( (lv_loopType_0_0= 'foreach' ) ) '(' 'var' ( (lv_controlVar_3_0= RULE_ID ) ) 'in' ( (lv_condition_5_0= ruleExpression ) ) ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2192:1: ( ( (lv_loopType_0_0= 'foreach' ) ) '(' 'var' ( (lv_controlVar_3_0= RULE_ID ) ) 'in' ( (lv_condition_5_0= ruleExpression ) ) ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2192:1: ( ( (lv_loopType_0_0= 'foreach' ) ) '(' 'var' ( (lv_controlVar_3_0= RULE_ID ) ) 'in' ( (lv_condition_5_0= ruleExpression ) ) ')' ( (lv_bodyStatement_7_0= ruleStatement ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2192:2: ( (lv_loopType_0_0= 'foreach' ) ) '(' 'var' ( (lv_controlVar_3_0= RULE_ID ) ) 'in' ( (lv_condition_5_0= ruleExpression ) ) ')' ( (lv_bodyStatement_7_0= ruleStatement ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2192:2: ( (lv_loopType_0_0= 'foreach' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2193:1: (lv_loopType_0_0= 'foreach' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2193:1: (lv_loopType_0_0= 'foreach' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2194:3: lv_loopType_0_0= 'foreach'
            {
            lv_loopType_0_0=(Token)input.LT(1);
            match(input,45,FollowSets000.FOLLOW_45_in_ruleForEachStatement3939); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForEachStatementAccess().getLoopTypeForeachKeyword_0_0(), "loopType"); 
                  
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForEachStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        
              	        try {
              	       		set(current, "loopType", lv_loopType_0_0, "foreach", lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,17,FollowSets000.FOLLOW_17_in_ruleForEachStatement3962); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForEachStatementAccess().getLeftParenthesisKeyword_1(), null); 
                  
            }
            match(input,27,FollowSets000.FOLLOW_27_in_ruleForEachStatement3972); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForEachStatementAccess().getVarKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2221:1: ( (lv_controlVar_3_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2222:1: (lv_controlVar_3_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2222:1: (lv_controlVar_3_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2223:3: lv_controlVar_3_0= RULE_ID
            {
            lv_controlVar_3_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleForEachStatement3989); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getForEachStatementAccess().getControlVarIDTerminalRuleCall_3_0(), "controlVar"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForEachStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"controlVar",
              	        		lv_controlVar_3_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,46,FollowSets000.FOLLOW_46_in_ruleForEachStatement4004); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForEachStatementAccess().getInKeyword_4(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2249:1: ( (lv_condition_5_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2250:1: (lv_condition_5_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2250:1: (lv_condition_5_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2251:3: lv_condition_5_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForEachStatementAccess().getConditionExpressionParserRuleCall_5_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleForEachStatement4025);
            lv_condition_5_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForEachStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"condition",
              	        		lv_condition_5_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,19,FollowSets000.FOLLOW_19_in_ruleForEachStatement4035); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getForEachStatementAccess().getRightParenthesisKeyword_6(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2277:1: ( (lv_bodyStatement_7_0= ruleStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2278:1: (lv_bodyStatement_7_0= ruleStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2278:1: (lv_bodyStatement_7_0= ruleStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2279:3: lv_bodyStatement_7_0= ruleStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getForEachStatementAccess().getBodyStatementStatementParserRuleCall_7_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleForEachStatement4056);
            lv_bodyStatement_7_0=ruleStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getForEachStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"bodyStatement",
              	        		lv_bodyStatement_7_0, 
              	        		"Statement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleForEachStatement


    // $ANTLR start entryRuleWhileStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2309:1: entryRuleWhileStatement returns [EObject current=null] : iv_ruleWhileStatement= ruleWhileStatement EOF ;
    public final EObject entryRuleWhileStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWhileStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2310:2: (iv_ruleWhileStatement= ruleWhileStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2311:2: iv_ruleWhileStatement= ruleWhileStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getWhileStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleWhileStatement_in_entryRuleWhileStatement4092);
            iv_ruleWhileStatement=ruleWhileStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleWhileStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleWhileStatement4102); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleWhileStatement


    // $ANTLR start ruleWhileStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2318:1: ruleWhileStatement returns [EObject current=null] : ( ( (lv_loopType_0_0= 'while' ) ) '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) ) ;
    public final EObject ruleWhileStatement() throws RecognitionException {
        EObject current = null;

        Token lv_loopType_0_0=null;
        EObject lv_condition_2_0 = null;

        EObject lv_bodyStatement_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2323:6: ( ( ( (lv_loopType_0_0= 'while' ) ) '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2324:1: ( ( (lv_loopType_0_0= 'while' ) ) '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2324:1: ( ( (lv_loopType_0_0= 'while' ) ) '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_bodyStatement_4_0= ruleStatement ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2324:2: ( (lv_loopType_0_0= 'while' ) ) '(' ( (lv_condition_2_0= ruleExpression ) ) ')' ( (lv_bodyStatement_4_0= ruleStatement ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2324:2: ( (lv_loopType_0_0= 'while' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2325:1: (lv_loopType_0_0= 'while' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2325:1: (lv_loopType_0_0= 'while' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2326:3: lv_loopType_0_0= 'while'
            {
            lv_loopType_0_0=(Token)input.LT(1);
            match(input,47,FollowSets000.FOLLOW_47_in_ruleWhileStatement4145); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getWhileStatementAccess().getLoopTypeWhileKeyword_0_0(), "loopType"); 
                  
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getWhileStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        
              	        try {
              	       		set(current, "loopType", lv_loopType_0_0, "while", lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,17,FollowSets000.FOLLOW_17_in_ruleWhileStatement4168); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getWhileStatementAccess().getLeftParenthesisKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2349:1: ( (lv_condition_2_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2350:1: (lv_condition_2_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2350:1: (lv_condition_2_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2351:3: lv_condition_2_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getWhileStatementAccess().getConditionExpressionParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleWhileStatement4189);
            lv_condition_2_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getWhileStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"condition",
              	        		lv_condition_2_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            match(input,19,FollowSets000.FOLLOW_19_in_ruleWhileStatement4199); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getWhileStatementAccess().getRightParenthesisKeyword_3(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2377:1: ( (lv_bodyStatement_4_0= ruleStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2378:1: (lv_bodyStatement_4_0= ruleStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2378:1: (lv_bodyStatement_4_0= ruleStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2379:3: lv_bodyStatement_4_0= ruleStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getWhileStatementAccess().getBodyStatementStatementParserRuleCall_4_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleWhileStatement4220);
            lv_bodyStatement_4_0=ruleStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getWhileStatementRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"bodyStatement",
              	        		lv_bodyStatement_4_0, 
              	        		"Statement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleWhileStatement


    // $ANTLR start entryRuleForInitStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2409:1: entryRuleForInitStatement returns [EObject current=null] : iv_ruleForInitStatement= ruleForInitStatement EOF ;
    public final EObject entryRuleForInitStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForInitStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2410:2: (iv_ruleForInitStatement= ruleForInitStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2411:2: iv_ruleForInitStatement= ruleForInitStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getForInitStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForInitStatement_in_entryRuleForInitStatement4256);
            iv_ruleForInitStatement=ruleForInitStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleForInitStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForInitStatement4266); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleForInitStatement


    // $ANTLR start ruleForInitStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2418:1: ruleForInitStatement returns [EObject current=null] : ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) ;
    public final EObject ruleForInitStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_children_0_1 = null;

        EObject lv_children_0_2 = null;

        EObject lv_children_2_1 = null;

        EObject lv_children_2_2 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2423:6: ( ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:1: ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:1: ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( ((LA30_0>=RULE_ID && LA30_0<=RULE_INT)||LA30_0==17||LA30_0==27||LA30_0==34||LA30_0==50||LA30_0==67||(LA30_0>=71 && LA30_0<=80)||(LA30_0>=87 && LA30_0<=88)) ) {
                alt30=1;
            }
            else if ( (LA30_0==EOF||LA30_0==13) ) {
                alt30=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("2424:1: ( ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )", 30, 0, input);

                throw nvae;
            }
            switch (alt30) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:2: ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:2: ( ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )* )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:3: ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) ) ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )*
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2424:3: ( ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2425:1: ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2425:1: ( (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2426:1: (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2426:1: (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement )
                    int alt27=2;
                    int LA27_0 = input.LA(1);

                    if ( (LA27_0==27) ) {
                        alt27=1;
                    }
                    else if ( ((LA27_0>=RULE_ID && LA27_0<=RULE_INT)||LA27_0==17||LA27_0==34||LA27_0==50||LA27_0==67||(LA27_0>=71 && LA27_0<=80)||(LA27_0>=87 && LA27_0<=88)) ) {
                        alt27=2;
                    }
                    else {
                        if (backtracking>0) {failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("2426:1: (lv_children_0_1= ruleDeclarationStatement | lv_children_0_2= ruleAssignStatement )", 27, 0, input);

                        throw nvae;
                    }
                    switch (alt27) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2427:3: lv_children_0_1= ruleDeclarationStatement
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenDeclarationStatementParserRuleCall_0_0_0_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement4315);
                            lv_children_0_1=ruleDeclarationStatement();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getForInitStatementRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_0_1, 
                              	        		"DeclarationStatement", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2448:8: lv_children_0_2= ruleAssignStatement
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenAssignStatementParserRuleCall_0_0_0_1(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForInitStatement4334);
                            lv_children_0_2=ruleAssignStatement();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getForInitStatementRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_0_2, 
                              	        		"AssignStatement", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2472:2: ( ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) ) )*
                    loop29:
                    do {
                        int alt29=2;
                        int LA29_0 = input.LA(1);

                        if ( (LA29_0==18) ) {
                            alt29=1;
                        }


                        switch (alt29) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2472:4: ',' ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleForInitStatement4348); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getForInitStatementAccess().getCommaKeyword_0_1_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2476:1: ( ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2477:1: ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2477:1: ( (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2478:1: (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2478:1: (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement )
                    	    int alt28=2;
                    	    int LA28_0 = input.LA(1);

                    	    if ( (LA28_0==27) ) {
                    	        alt28=1;
                    	    }
                    	    else if ( ((LA28_0>=RULE_ID && LA28_0<=RULE_INT)||LA28_0==17||LA28_0==34||LA28_0==50||LA28_0==67||(LA28_0>=71 && LA28_0<=80)||(LA28_0>=87 && LA28_0<=88)) ) {
                    	        alt28=2;
                    	    }
                    	    else {
                    	        if (backtracking>0) {failed=true; return current;}
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("2478:1: (lv_children_2_1= ruleDeclarationStatement | lv_children_2_2= ruleAssignStatement )", 28, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt28) {
                    	        case 1 :
                    	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2479:3: lv_children_2_1= ruleDeclarationStatement
                    	            {
                    	            if ( backtracking==0 ) {
                    	               
                    	              	        currentNode=createCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenDeclarationStatementParserRuleCall_0_1_1_0_0(), currentNode); 
                    	              	    
                    	            }
                    	            pushFollow(FollowSets000.FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement4371);
                    	            lv_children_2_1=ruleDeclarationStatement();
                    	            _fsp--;
                    	            if (failed) return current;
                    	            if ( backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = factory.create(grammarAccess.getForInitStatementRule().getType().getClassifier());
                    	              	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	              	        }
                    	              	        try {
                    	              	       		add(
                    	              	       			current, 
                    	              	       			"children",
                    	              	        		lv_children_2_1, 
                    	              	        		"DeclarationStatement", 
                    	              	        		currentNode);
                    	              	        } catch (ValueConverterException vce) {
                    	              				handleValueConverterException(vce);
                    	              	        }
                    	              	        currentNode = currentNode.getParent();
                    	              	    
                    	            }

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2500:8: lv_children_2_2= ruleAssignStatement
                    	            {
                    	            if ( backtracking==0 ) {
                    	               
                    	              	        currentNode=createCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenAssignStatementParserRuleCall_0_1_1_0_1(), currentNode); 
                    	              	    
                    	            }
                    	            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForInitStatement4390);
                    	            lv_children_2_2=ruleAssignStatement();
                    	            _fsp--;
                    	            if (failed) return current;
                    	            if ( backtracking==0 ) {

                    	              	        if (current==null) {
                    	              	            current = factory.create(grammarAccess.getForInitStatementRule().getType().getClassifier());
                    	              	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	              	        }
                    	              	        try {
                    	              	       		add(
                    	              	       			current, 
                    	              	       			"children",
                    	              	        		lv_children_2_2, 
                    	              	        		"AssignStatement", 
                    	              	        		currentNode);
                    	              	        } catch (ValueConverterException vce) {
                    	              				handleValueConverterException(vce);
                    	              	        }
                    	              	        currentNode = currentNode.getParent();
                    	              	    
                    	            }

                    	            }
                    	            break;

                    	    }


                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop29;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2525:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2525:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2526:1: (lv_children_3_0= ruleEmptyStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2526:1: (lv_children_3_0= ruleEmptyStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2527:3: lv_children_3_0= ruleEmptyStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getForInitStatementAccess().getChildrenEmptyStatementParserRuleCall_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleForInitStatement4423);
                    lv_children_3_0=ruleEmptyStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getForInitStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_3_0, 
                      	        		"EmptyStatement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleForInitStatement


    // $ANTLR start entryRuleForPostStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2557:1: entryRuleForPostStatement returns [EObject current=null] : iv_ruleForPostStatement= ruleForPostStatement EOF ;
    public final EObject entryRuleForPostStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleForPostStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2558:2: (iv_ruleForPostStatement= ruleForPostStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2559:2: iv_ruleForPostStatement= ruleForPostStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getForPostStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleForPostStatement_in_entryRuleForPostStatement4459);
            iv_ruleForPostStatement=ruleForPostStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleForPostStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleForPostStatement4469); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleForPostStatement


    // $ANTLR start ruleForPostStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2566:1: ruleForPostStatement returns [EObject current=null] : ( ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) ;
    public final EObject ruleForPostStatement() throws RecognitionException {
        EObject current = null;

        EObject lv_children_0_0 = null;

        EObject lv_children_2_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2571:6: ( ( ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:1: ( ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:1: ( ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_INT)||LA32_0==17||LA32_0==34||LA32_0==50||LA32_0==67||(LA32_0>=71 && LA32_0<=80)||(LA32_0>=87 && LA32_0<=88)) ) {
                alt32=1;
            }
            else if ( (LA32_0==EOF||LA32_0==19) ) {
                alt32=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("2572:1: ( ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* ) | ( (lv_children_3_0= ruleEmptyStatement ) ) )", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:2: ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:2: ( ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )* )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:3: ( (lv_children_0_0= ruleAssignStatement ) ) ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )*
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2572:3: ( (lv_children_0_0= ruleAssignStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2573:1: (lv_children_0_0= ruleAssignStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2573:1: (lv_children_0_0= ruleAssignStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2574:3: lv_children_0_0= ruleAssignStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenAssignStatementParserRuleCall_0_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForPostStatement4516);
                    lv_children_0_0=ruleAssignStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getForPostStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_0_0, 
                      	        		"AssignStatement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2596:2: ( ',' ( (lv_children_2_0= ruleAssignStatement ) ) )*
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( (LA31_0==18) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2596:4: ',' ( (lv_children_2_0= ruleAssignStatement ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleForPostStatement4527); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getForPostStatementAccess().getCommaKeyword_0_1_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2600:1: ( (lv_children_2_0= ruleAssignStatement ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2601:1: (lv_children_2_0= ruleAssignStatement )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2601:1: (lv_children_2_0= ruleAssignStatement )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2602:3: lv_children_2_0= ruleAssignStatement
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenAssignStatementParserRuleCall_0_1_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_ruleForPostStatement4548);
                    	    lv_children_2_0=ruleAssignStatement();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getForPostStatementRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"children",
                    	      	        		lv_children_2_0, 
                    	      	        		"AssignStatement", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop31;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2625:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2625:6: ( (lv_children_3_0= ruleEmptyStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2626:1: (lv_children_3_0= ruleEmptyStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2626:1: (lv_children_3_0= ruleEmptyStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2627:3: lv_children_3_0= ruleEmptyStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getForPostStatementAccess().getChildrenEmptyStatementParserRuleCall_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleEmptyStatement_in_ruleForPostStatement4578);
                    lv_children_3_0=ruleEmptyStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getForPostStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_3_0, 
                      	        		"EmptyStatement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleForPostStatement


    // $ANTLR start entryRuleAssignStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2657:1: entryRuleAssignStatement returns [EObject current=null] : iv_ruleAssignStatement= ruleAssignStatement EOF ;
    public final EObject entryRuleAssignStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignStatement = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2658:2: (iv_ruleAssignStatement= ruleAssignStatement EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2659:2: iv_ruleAssignStatement= ruleAssignStatement EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getAssignStatementRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleAssignStatement_in_entryRuleAssignStatement4614);
            iv_ruleAssignStatement=ruleAssignStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleAssignStatement; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAssignStatement4624); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAssignStatement


    // $ANTLR start ruleAssignStatement
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2666:1: ruleAssignStatement returns [EObject current=null] : (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) ;
    public final EObject ruleAssignStatement() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_BooleanExpression_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2671:6: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2672:1: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2672:1: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2673:2: this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getAssignStatementAccess().getBooleanExpressionParserRuleCall_0(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleAssignStatement4674);
            this_BooleanExpression_0=ruleBooleanExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_BooleanExpression_0; 
                      currentNode = currentNode.getParent();
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2684:1: ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==21) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2684:2: () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2684:2: ()
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2685:2: 
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              temp=factory.create(grammarAccess.getAssignStatementAccess().getExpressionChildrenAction_1_0().getType().getClassifier());
                              try {
                              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
                              } catch(ValueConverterException vce) {
                              	handleValueConverterException(vce);
                              }
                              current = temp; 
                              temp = null;
                              CompositeNode newNode = createCompositeNode(grammarAccess.getAssignStatementAccess().getExpressionChildrenAction_1_0(), currentNode.getParent());
                          newNode.getChildren().add(currentNode);
                          moveLookaheadInfo(currentNode, newNode);
                          currentNode = newNode; 
                              associateNodeWithAstElement(currentNode, current); 
                          
                    }

                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2703:2: ( (lv_operator_2_0= '=' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2704:1: (lv_operator_2_0= '=' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2704:1: (lv_operator_2_0= '=' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2705:3: lv_operator_2_0= '='
                    {
                    lv_operator_2_0=(Token)input.LT(1);
                    match(input,21,FollowSets000.FOLLOW_21_in_ruleAssignStatement4704); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getAssignStatementAccess().getOperatorEqualsSignKeyword_1_1_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getAssignStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_2_0, "=", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2724:2: ( (lv_children_3_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2725:1: (lv_children_3_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2725:1: (lv_children_3_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2726:3: lv_children_3_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getAssignStatementAccess().getChildrenExpressionParserRuleCall_1_2_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleAssignStatement4738);
                    lv_children_3_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getAssignStatementRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_3_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAssignStatement


    // $ANTLR start entryRuleArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2756:1: entryRuleArgument returns [EObject current=null] : iv_ruleArgument= ruleArgument EOF ;
    public final EObject entryRuleArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArgument = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2757:2: (iv_ruleArgument= ruleArgument EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2758:2: iv_ruleArgument= ruleArgument EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getArgumentRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_entryRuleArgument4776);
            iv_ruleArgument=ruleArgument();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleArgument4786); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleArgument


    // $ANTLR start ruleArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2765:1: ruleArgument returns [EObject current=null] : (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument ) ;
    public final EObject ruleArgument() throws RecognitionException {
        EObject current = null;

        EObject this_NamedArgument_0 = null;

        EObject this_UnamedArgument_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2770:6: ( (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2771:1: (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2771:1: (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument )
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==RULE_ID) ) {
                int LA34_1 = input.LA(2);

                if ( (synpred50()) ) {
                    alt34=1;
                }
                else if ( (true) ) {
                    alt34=2;
                }
                else {
                    if (backtracking>0) {failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("2771:1: (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument )", 34, 1, input);

                    throw nvae;
                }
            }
            else if ( ((LA34_0>=RULE_STRING && LA34_0<=RULE_INT)||LA34_0==17||LA34_0==25||(LA34_0>=33 && LA34_0<=34)||(LA34_0>=50 && LA34_0<=51)||LA34_0==67||(LA34_0>=71 && LA34_0<=80)||(LA34_0>=87 && LA34_0<=88)) ) {
                alt34=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("2771:1: (this_NamedArgument_0= ruleNamedArgument | this_UnamedArgument_1= ruleUnamedArgument )", 34, 0, input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2772:2: this_NamedArgument_0= ruleNamedArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getArgumentAccess().getNamedArgumentParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleNamedArgument_in_ruleArgument4836);
                    this_NamedArgument_0=ruleNamedArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_NamedArgument_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2785:2: this_UnamedArgument_1= ruleUnamedArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getArgumentAccess().getUnamedArgumentParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleUnamedArgument_in_ruleArgument4866);
                    this_UnamedArgument_1=ruleUnamedArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_UnamedArgument_1; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleArgument


    // $ANTLR start entryRuleUnamedArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2804:1: entryRuleUnamedArgument returns [EObject current=null] : iv_ruleUnamedArgument= ruleUnamedArgument EOF ;
    public final EObject entryRuleUnamedArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnamedArgument = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2805:2: (iv_ruleUnamedArgument= ruleUnamedArgument EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2806:2: iv_ruleUnamedArgument= ruleUnamedArgument EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getUnamedArgumentRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleUnamedArgument_in_entryRuleUnamedArgument4901);
            iv_ruleUnamedArgument=ruleUnamedArgument();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleUnamedArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUnamedArgument4911); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleUnamedArgument


    // $ANTLR start ruleUnamedArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2813:1: ruleUnamedArgument returns [EObject current=null] : ( (lv_value_0_0= ruleExpression ) ) ;
    public final EObject ruleUnamedArgument() throws RecognitionException {
        EObject current = null;

        EObject lv_value_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2818:6: ( ( (lv_value_0_0= ruleExpression ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2819:1: ( (lv_value_0_0= ruleExpression ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2819:1: ( (lv_value_0_0= ruleExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2820:1: (lv_value_0_0= ruleExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2820:1: (lv_value_0_0= ruleExpression )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2821:3: lv_value_0_0= ruleExpression
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getUnamedArgumentAccess().getValueExpressionParserRuleCall_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleUnamedArgument4956);
            lv_value_0_0=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getUnamedArgumentRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"value",
              	        		lv_value_0_0, 
              	        		"Expression", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleUnamedArgument


    // $ANTLR start entryRuleNamedArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2851:1: entryRuleNamedArgument returns [EObject current=null] : iv_ruleNamedArgument= ruleNamedArgument EOF ;
    public final EObject entryRuleNamedArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedArgument = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2852:2: (iv_ruleNamedArgument= ruleNamedArgument EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2853:2: iv_ruleNamedArgument= ruleNamedArgument EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getNamedArgumentRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleNamedArgument_in_entryRuleNamedArgument4991);
            iv_ruleNamedArgument=ruleNamedArgument();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleNamedArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNamedArgument5001); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNamedArgument


    // $ANTLR start ruleNamedArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2860:1: ruleNamedArgument returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) '=' ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) ) ) ;
    public final EObject ruleNamedArgument() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_value_2_0 = null;

        EObject lv_children_5_0 = null;

        EObject lv_children_7_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2865:6: ( ( ( (lv_name_0_0= RULE_ID ) ) '=' ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2866:1: ( ( (lv_name_0_0= RULE_ID ) ) '=' ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2866:1: ( ( (lv_name_0_0= RULE_ID ) ) '=' ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2866:2: ( (lv_name_0_0= RULE_ID ) ) '=' ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2866:2: ( (lv_name_0_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2867:1: (lv_name_0_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2867:1: (lv_name_0_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2868:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleNamedArgument5043); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getNamedArgumentAccess().getNameIDTerminalRuleCall_0_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getNamedArgumentRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_0_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,21,FollowSets000.FOLLOW_21_in_ruleNamedArgument5058); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getNamedArgumentAccess().getEqualsSignKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2894:1: ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) )
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( ((LA37_0>=RULE_ID && LA37_0<=RULE_INT)||LA37_0==17||LA37_0==25||(LA37_0>=33 && LA37_0<=34)||(LA37_0>=50 && LA37_0<=51)||LA37_0==67||(LA37_0>=71 && LA37_0<=80)||(LA37_0>=87 && LA37_0<=88)) ) {
                alt37=1;
            }
            else if ( (LA37_0==48) ) {
                alt37=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("2894:1: ( ( (lv_value_2_0= ruleExpression ) ) | ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' ) )", 37, 0, input);

                throw nvae;
            }
            switch (alt37) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2894:2: ( (lv_value_2_0= ruleExpression ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2894:2: ( (lv_value_2_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2895:1: (lv_value_2_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2895:1: (lv_value_2_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2896:3: lv_value_2_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getNamedArgumentAccess().getValueExpressionParserRuleCall_2_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleNamedArgument5080);
                    lv_value_2_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getNamedArgumentRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"value",
                      	        		lv_value_2_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2919:6: ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2919:6: ( 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2919:8: 'struct' '{' ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )? '}'
                    {
                    match(input,48,FollowSets000.FOLLOW_48_in_ruleNamedArgument5097); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getNamedArgumentAccess().getStructKeyword_2_1_0(), null); 
                          
                    }
                    match(input,25,FollowSets000.FOLLOW_25_in_ruleNamedArgument5107); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getNamedArgumentAccess().getLeftCurlyBracketKeyword_2_1_1(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2927:1: ( ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )* )?
                    int alt36=2;
                    int LA36_0 = input.LA(1);

                    if ( ((LA36_0>=RULE_ID && LA36_0<=RULE_INT)||LA36_0==17||LA36_0==25||(LA36_0>=33 && LA36_0<=34)||(LA36_0>=50 && LA36_0<=51)||LA36_0==67||(LA36_0>=71 && LA36_0<=80)||(LA36_0>=87 && LA36_0<=88)) ) {
                        alt36=1;
                    }
                    switch (alt36) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2927:2: ( (lv_children_5_0= ruleArgument ) ) ( ',' ( (lv_children_7_0= ruleArgument ) ) )*
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2927:2: ( (lv_children_5_0= ruleArgument ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2928:1: (lv_children_5_0= ruleArgument )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2928:1: (lv_children_5_0= ruleArgument )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2929:3: lv_children_5_0= ruleArgument
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getNamedArgumentAccess().getChildrenArgumentParserRuleCall_2_1_2_0_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleNamedArgument5129);
                            lv_children_5_0=ruleArgument();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getNamedArgumentRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_5_0, 
                              	        		"Argument", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2951:2: ( ',' ( (lv_children_7_0= ruleArgument ) ) )*
                            loop35:
                            do {
                                int alt35=2;
                                int LA35_0 = input.LA(1);

                                if ( (LA35_0==18) ) {
                                    alt35=1;
                                }


                                switch (alt35) {
                            	case 1 :
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2951:4: ',' ( (lv_children_7_0= ruleArgument ) )
                            	    {
                            	    match(input,18,FollowSets000.FOLLOW_18_in_ruleNamedArgument5140); if (failed) return current;
                            	    if ( backtracking==0 ) {

                            	              createLeafNode(grammarAccess.getNamedArgumentAccess().getCommaKeyword_2_1_2_1_0(), null); 
                            	          
                            	    }
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2955:1: ( (lv_children_7_0= ruleArgument ) )
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2956:1: (lv_children_7_0= ruleArgument )
                            	    {
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2956:1: (lv_children_7_0= ruleArgument )
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2957:3: lv_children_7_0= ruleArgument
                            	    {
                            	    if ( backtracking==0 ) {
                            	       
                            	      	        currentNode=createCompositeNode(grammarAccess.getNamedArgumentAccess().getChildrenArgumentParserRuleCall_2_1_2_1_1_0(), currentNode); 
                            	      	    
                            	    }
                            	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleNamedArgument5161);
                            	    lv_children_7_0=ruleArgument();
                            	    _fsp--;
                            	    if (failed) return current;
                            	    if ( backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = factory.create(grammarAccess.getNamedArgumentRule().getType().getClassifier());
                            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                            	      	        }
                            	      	        try {
                            	      	       		add(
                            	      	       			current, 
                            	      	       			"children",
                            	      	        		lv_children_7_0, 
                            	      	        		"Argument", 
                            	      	        		currentNode);
                            	      	        } catch (ValueConverterException vce) {
                            	      				handleValueConverterException(vce);
                            	      	        }
                            	      	        currentNode = currentNode.getParent();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop35;
                                }
                            } while (true);


                            }
                            break;

                    }

                    match(input,26,FollowSets000.FOLLOW_26_in_ruleNamedArgument5175); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getNamedArgumentAccess().getRightCurlyBracketKeyword_2_1_3(), null); 
                          
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNamedArgument


    // $ANTLR start entryRuleExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2991:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
    public final EObject entryRuleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2992:2: (iv_ruleExpression= ruleExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2993:2: iv_ruleExpression= ruleExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_entryRuleExpression5213);
            iv_ruleExpression=ruleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleExpression5223); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleExpression


    // $ANTLR start ruleExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3000:1: ruleExpression returns [EObject current=null] : ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? ) | this_ArrayExpression_6= ruleArrayExpression | this_StatementExpression_7= ruleStatementExpression ) ;
    public final EObject ruleExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_SimpleExpression_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;

        EObject this_ArrayExpression_6 = null;

        EObject this_StatementExpression_7 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3005:6: ( ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? ) | this_ArrayExpression_6= ruleArrayExpression | this_StatementExpression_7= ruleStatementExpression ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3006:1: ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? ) | this_ArrayExpression_6= ruleArrayExpression | this_StatementExpression_7= ruleStatementExpression )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3006:1: ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? ) | this_ArrayExpression_6= ruleArrayExpression | this_StatementExpression_7= ruleStatementExpression )
            int alt39=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
            case RULE_STRING:
            case RULE_VERBATIM_STRING:
            case RULE_INT:
            case 17:
            case 33:
            case 34:
            case 50:
            case 67:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 87:
            case 88:
                {
                alt39=1;
                }
                break;
            case 25:
                {
                alt39=2;
                }
                break;
            case 51:
                {
                alt39=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("3006:1: ( (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? ) | this_ArrayExpression_6= ruleArrayExpression | this_StatementExpression_7= ruleStatementExpression )", 39, 0, input);

                throw nvae;
            }

            switch (alt39) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3006:2: (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3006:2: (this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )? )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3007:2: this_SimpleExpression_0= ruleSimpleExpression ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )?
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getSimpleExpressionParserRuleCall_0_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_ruleExpression5274);
                    this_SimpleExpression_0=ruleSimpleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_SimpleExpression_0; 
                              currentNode = currentNode.getParent();
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:1: ( () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) ) )?
                    int alt38=2;
                    int LA38_0 = input.LA(1);

                    if ( (LA38_0==49) ) {
                        int LA38_1 = input.LA(2);

                        if ( (synpred54()) ) {
                            alt38=1;
                        }
                    }
                    switch (alt38) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:2: () ( (lv_operator_2_0= '?' ) ) ( (lv_children_3_0= ruleExpression ) ) ':' ( (lv_children_5_0= ruleExpression ) )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:2: ()
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3019:2: 
                            {
                            if ( backtracking==0 ) {
                               
                              	  /* */ 
                              	
                            }
                            if ( backtracking==0 ) {
                               
                                      temp=factory.create(grammarAccess.getExpressionAccess().getExpressionChildrenAction_0_1_0().getType().getClassifier());
                                      try {
                                      	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
                                      } catch(ValueConverterException vce) {
                                      	handleValueConverterException(vce);
                                      }
                                      current = temp; 
                                      temp = null;
                                      CompositeNode newNode = createCompositeNode(grammarAccess.getExpressionAccess().getExpressionChildrenAction_0_1_0(), currentNode.getParent());
                                  newNode.getChildren().add(currentNode);
                                  moveLookaheadInfo(currentNode, newNode);
                                  currentNode = newNode; 
                                      associateNodeWithAstElement(currentNode, current); 
                                  
                            }

                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3037:2: ( (lv_operator_2_0= '?' ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3038:1: (lv_operator_2_0= '?' )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3038:1: (lv_operator_2_0= '?' )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3039:3: lv_operator_2_0= '?'
                            {
                            lv_operator_2_0=(Token)input.LT(1);
                            match(input,49,FollowSets000.FOLLOW_49_in_ruleExpression5304); if (failed) return current;
                            if ( backtracking==0 ) {

                                      createLeafNode(grammarAccess.getExpressionAccess().getOperatorQuestionMarkKeyword_0_1_1_0(), "operator"); 
                                  
                            }
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getExpressionRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode, current);
                              	        }
                              	        
                              	        try {
                              	       		set(current, "operator", lv_operator_2_0, "?", lastConsumedNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	    
                            }

                            }


                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3058:2: ( (lv_children_3_0= ruleExpression ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3059:1: (lv_children_3_0= ruleExpression )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3059:1: (lv_children_3_0= ruleExpression )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3060:3: lv_children_3_0= ruleExpression
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getChildrenExpressionParserRuleCall_0_1_2_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExpression5338);
                            lv_children_3_0=ruleExpression();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getExpressionRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_3_0, 
                              	        		"Expression", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }

                            match(input,16,FollowSets000.FOLLOW_16_in_ruleExpression5348); if (failed) return current;
                            if ( backtracking==0 ) {

                                      createLeafNode(grammarAccess.getExpressionAccess().getColonKeyword_0_1_3(), null); 
                                  
                            }
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3086:1: ( (lv_children_5_0= ruleExpression ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3087:1: (lv_children_5_0= ruleExpression )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3087:1: (lv_children_5_0= ruleExpression )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3088:3: lv_children_5_0= ruleExpression
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getChildrenExpressionParserRuleCall_0_1_4_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleExpression5369);
                            lv_children_5_0=ruleExpression();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getExpressionRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_5_0, 
                              	        		"Expression", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3112:2: this_ArrayExpression_6= ruleArrayExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getArrayExpressionParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArrayExpression_in_ruleExpression5403);
                    this_ArrayExpression_6=ruleArrayExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_ArrayExpression_6; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3125:2: this_StatementExpression_7= ruleStatementExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getStatementExpressionParserRuleCall_2(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatementExpression_in_ruleExpression5433);
                    this_StatementExpression_7=ruleStatementExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_StatementExpression_7; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleExpression


    // $ANTLR start entryRuleSimpleExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3144:1: entryRuleSimpleExpression returns [EObject current=null] : iv_ruleSimpleExpression= ruleSimpleExpression EOF ;
    public final EObject entryRuleSimpleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3145:2: (iv_ruleSimpleExpression= ruleSimpleExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3146:2: iv_ruleSimpleExpression= ruleSimpleExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getSimpleExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_entryRuleSimpleExpression5468);
            iv_ruleSimpleExpression=ruleSimpleExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleSimpleExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSimpleExpression5478); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSimpleExpression


    // $ANTLR start ruleSimpleExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3153:1: ruleSimpleExpression returns [EObject current=null] : ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement ) ;
    public final EObject ruleSimpleExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject this_BooleanExpression_0 = null;

        EObject lv_children_3_0 = null;

        EObject this_MatchStatement_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3158:6: ( ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3159:1: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3159:1: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement )
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( ((LA41_0>=RULE_ID && LA41_0<=RULE_INT)||LA41_0==17||LA41_0==34||LA41_0==50||LA41_0==67||(LA41_0>=71 && LA41_0<=80)||(LA41_0>=87 && LA41_0<=88)) ) {
                alt41=1;
            }
            else if ( (LA41_0==33) ) {
                alt41=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("3159:1: ( (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? ) | this_MatchStatement_4= ruleMatchStatement )", 41, 0, input);

                throw nvae;
            }
            switch (alt41) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3159:2: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3159:2: (this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )? )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3160:2: this_BooleanExpression_0= ruleBooleanExpression ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getSimpleExpressionAccess().getBooleanExpressionParserRuleCall_0_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_ruleSimpleExpression5529);
                    this_BooleanExpression_0=ruleBooleanExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_BooleanExpression_0; 
                              currentNode = currentNode.getParent();
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:1: ( () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) ) )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==21) ) {
                        int LA40_1 = input.LA(2);

                        if ( (synpred57()) ) {
                            alt40=1;
                        }
                    }
                    switch (alt40) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:2: () ( (lv_operator_2_0= '=' ) ) ( (lv_children_3_0= ruleExpression ) )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:2: ()
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3172:2: 
                            {
                            if ( backtracking==0 ) {
                               
                              	  /* */ 
                              	
                            }
                            if ( backtracking==0 ) {
                               
                                      temp=factory.create(grammarAccess.getSimpleExpressionAccess().getExpressionChildrenAction_0_1_0().getType().getClassifier());
                                      try {
                                      	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
                                      } catch(ValueConverterException vce) {
                                      	handleValueConverterException(vce);
                                      }
                                      current = temp; 
                                      temp = null;
                                      CompositeNode newNode = createCompositeNode(grammarAccess.getSimpleExpressionAccess().getExpressionChildrenAction_0_1_0(), currentNode.getParent());
                                  newNode.getChildren().add(currentNode);
                                  moveLookaheadInfo(currentNode, newNode);
                                  currentNode = newNode; 
                                      associateNodeWithAstElement(currentNode, current); 
                                  
                            }

                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3190:2: ( (lv_operator_2_0= '=' ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3191:1: (lv_operator_2_0= '=' )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3191:1: (lv_operator_2_0= '=' )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3192:3: lv_operator_2_0= '='
                            {
                            lv_operator_2_0=(Token)input.LT(1);
                            match(input,21,FollowSets000.FOLLOW_21_in_ruleSimpleExpression5559); if (failed) return current;
                            if ( backtracking==0 ) {

                                      createLeafNode(grammarAccess.getSimpleExpressionAccess().getOperatorEqualsSignKeyword_0_1_1_0(), "operator"); 
                                  
                            }
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getSimpleExpressionRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode, current);
                              	        }
                              	        
                              	        try {
                              	       		set(current, "operator", lv_operator_2_0, "=", lastConsumedNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	    
                            }

                            }


                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3211:2: ( (lv_children_3_0= ruleExpression ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3212:1: (lv_children_3_0= ruleExpression )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3212:1: (lv_children_3_0= ruleExpression )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3213:3: lv_children_3_0= ruleExpression
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getSimpleExpressionAccess().getChildrenExpressionParserRuleCall_0_1_2_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleExpression5593);
                            lv_children_3_0=ruleExpression();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getSimpleExpressionRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_3_0, 
                              	        		"Expression", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3237:2: this_MatchStatement_4= ruleMatchStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getSimpleExpressionAccess().getMatchStatementParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleMatchStatement_in_ruleSimpleExpression5627);
                    this_MatchStatement_4=ruleMatchStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_MatchStatement_4; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSimpleExpression


    // $ANTLR start entryRuleArrayExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3256:1: entryRuleArrayExpression returns [EObject current=null] : iv_ruleArrayExpression= ruleArrayExpression EOF ;
    public final EObject entryRuleArrayExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleArrayExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3257:2: (iv_ruleArrayExpression= ruleArrayExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3258:2: iv_ruleArrayExpression= ruleArrayExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getArrayExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleArrayExpression_in_entryRuleArrayExpression5662);
            iv_ruleArrayExpression=ruleArrayExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleArrayExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleArrayExpression5672); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleArrayExpression


    // $ANTLR start ruleArrayExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3265:1: ruleArrayExpression returns [EObject current=null] : ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )? '}' ) ;
    public final EObject ruleArrayExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        EObject lv_children_2_0 = null;

        EObject lv_children_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3270:6: ( ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )? '}' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3271:1: ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )? '}' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3271:1: ( () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )? '}' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3271:2: () ( (lv_operator_1_0= '{' ) ) ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )? '}'
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3271:2: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3272:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getArrayExpressionAccess().getExpressionAction_0().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getArrayExpressionAccess().getExpressionAction_0(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3285:2: ( (lv_operator_1_0= '{' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3286:1: (lv_operator_1_0= '{' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3286:1: (lv_operator_1_0= '{' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3287:3: lv_operator_1_0= '{'
            {
            lv_operator_1_0=(Token)input.LT(1);
            match(input,25,FollowSets000.FOLLOW_25_in_ruleArrayExpression5727); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getArrayExpressionAccess().getOperatorLeftCurlyBracketKeyword_1_0(), "operator"); 
                  
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getArrayExpressionRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        
              	        try {
              	       		set(current, "operator", lv_operator_1_0, "{", lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3306:2: ( ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )* )?
            int alt43=2;
            int LA43_0 = input.LA(1);

            if ( ((LA43_0>=RULE_ID && LA43_0<=RULE_INT)||LA43_0==17||LA43_0==25||(LA43_0>=33 && LA43_0<=34)||(LA43_0>=50 && LA43_0<=51)||LA43_0==67||(LA43_0>=71 && LA43_0<=80)||(LA43_0>=87 && LA43_0<=88)) ) {
                alt43=1;
            }
            switch (alt43) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3306:3: ( (lv_children_2_0= ruleExpression ) ) ( ',' ( (lv_children_4_0= ruleExpression ) ) )*
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3306:3: ( (lv_children_2_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3307:1: (lv_children_2_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3307:1: (lv_children_2_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3308:3: lv_children_2_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getArrayExpressionAccess().getChildrenExpressionParserRuleCall_2_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleArrayExpression5762);
                    lv_children_2_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getArrayExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_2_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3330:2: ( ',' ( (lv_children_4_0= ruleExpression ) ) )*
                    loop42:
                    do {
                        int alt42=2;
                        int LA42_0 = input.LA(1);

                        if ( (LA42_0==18) ) {
                            alt42=1;
                        }


                        switch (alt42) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3330:4: ',' ( (lv_children_4_0= ruleExpression ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleArrayExpression5773); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getArrayExpressionAccess().getCommaKeyword_2_1_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3334:1: ( (lv_children_4_0= ruleExpression ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3335:1: (lv_children_4_0= ruleExpression )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3335:1: (lv_children_4_0= ruleExpression )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3336:3: lv_children_4_0= ruleExpression
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getArrayExpressionAccess().getChildrenExpressionParserRuleCall_2_1_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleArrayExpression5794);
                    	    lv_children_4_0=ruleExpression();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getArrayExpressionRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"children",
                    	      	        		lv_children_4_0, 
                    	      	        		"Expression", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop42;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,26,FollowSets000.FOLLOW_26_in_ruleArrayExpression5808); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getArrayExpressionAccess().getRightCurlyBracketKeyword_3(), null); 
                  
            }

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleArrayExpression


    // $ANTLR start entryRulePatternExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3370:1: entryRulePatternExpression returns [EObject current=null] : iv_rulePatternExpression= rulePatternExpression EOF ;
    public final EObject entryRulePatternExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3371:2: (iv_rulePatternExpression= rulePatternExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3372:2: iv_rulePatternExpression= rulePatternExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getPatternExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_entryRulePatternExpression5844);
            iv_rulePatternExpression=rulePatternExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_rulePatternExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternExpression5854); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePatternExpression


    // $ANTLR start rulePatternExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3379:1: rulePatternExpression returns [EObject current=null] : ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' ) ) ;
    public final EObject rulePatternExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        EObject lv_children_0_0 = null;

        EObject lv_children_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3384:6: ( ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3385:1: ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3385:1: ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' ) )
            int alt44=3;
            switch ( input.LA(1) ) {
            case 15:
                {
                alt44=1;
                }
                break;
            case RULE_ID:
                {
                alt44=2;
                }
                break;
            case 50:
                {
                alt44=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("3385:1: ( ( (lv_children_0_0= rulePatternDeclaration ) ) | ( ( ruleQualifiedID ) ) | ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' ) )", 44, 0, input);

                throw nvae;
            }

            switch (alt44) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3385:2: ( (lv_children_0_0= rulePatternDeclaration ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3385:2: ( (lv_children_0_0= rulePatternDeclaration ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3386:1: (lv_children_0_0= rulePatternDeclaration )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3386:1: (lv_children_0_0= rulePatternDeclaration )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3387:3: lv_children_0_0= rulePatternDeclaration
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternExpressionAccess().getChildrenPatternDeclarationParserRuleCall_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternDeclaration_in_rulePatternExpression5900);
                    lv_children_0_0=rulePatternDeclaration();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_0_0, 
                      	        		"PatternDeclaration", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3410:6: ( ( ruleQualifiedID ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3410:6: ( ( ruleQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3411:1: ( ruleQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3411:1: ( ruleQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3412:3: ruleQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      		  /* */ 
                      		
                    }
                    if ( backtracking==0 ) {

                      			if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                              
                    }
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternExpressionAccess().getRefsDeslPatternCrossReference_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_rulePatternExpression5933);
                    ruleQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3430:6: ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3430:6: ( ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3430:7: ( (lv_operator_2_0= 'evaluate' ) ) '(' ( (lv_children_4_0= ruleExpression ) ) ')'
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3430:7: ( (lv_operator_2_0= 'evaluate' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3431:1: (lv_operator_2_0= 'evaluate' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3431:1: (lv_operator_2_0= 'evaluate' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3432:3: lv_operator_2_0= 'evaluate'
                    {
                    lv_operator_2_0=(Token)input.LT(1);
                    match(input,50,FollowSets000.FOLLOW_50_in_rulePatternExpression5958); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getPatternExpressionAccess().getOperatorEvaluateKeyword_2_0_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_2_0, "evaluate", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    match(input,17,FollowSets000.FOLLOW_17_in_rulePatternExpression5981); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getPatternExpressionAccess().getLeftParenthesisKeyword_2_1(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3455:1: ( (lv_children_4_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3456:1: (lv_children_4_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3456:1: (lv_children_4_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3457:3: lv_children_4_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternExpressionAccess().getChildrenExpressionParserRuleCall_2_2_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_rulePatternExpression6002);
                    lv_children_4_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_4_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    match(input,19,FollowSets000.FOLLOW_19_in_rulePatternExpression6012); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getPatternExpressionAccess().getRightParenthesisKeyword_2_3(), null); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePatternExpression


    // $ANTLR start entryRuleStatementExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3491:1: entryRuleStatementExpression returns [EObject current=null] : iv_ruleStatementExpression= ruleStatementExpression EOF ;
    public final EObject entryRuleStatementExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatementExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3492:2: (iv_ruleStatementExpression= ruleStatementExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3493:2: iv_ruleStatementExpression= ruleStatementExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getStatementExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleStatementExpression_in_entryRuleStatementExpression6049);
            iv_ruleStatementExpression=ruleStatementExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleStatementExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStatementExpression6059); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStatementExpression


    // $ANTLR start ruleStatementExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3500:1: ruleStatementExpression returns [EObject current=null] : ( () 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) ) ;
    public final EObject ruleStatementExpression() throws RecognitionException {
        EObject current = null;

        EObject lv_children_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3505:6: ( ( () 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3506:1: ( () 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3506:1: ( () 'statement' ( (lv_children_2_0= ruleCompositeStatement ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3506:2: () 'statement' ( (lv_children_2_0= ruleCompositeStatement ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3506:2: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3507:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getStatementExpressionAccess().getStatementExpressionAction_0().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getStatementExpressionAccess().getStatementExpressionAction_0(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }

            match(input,51,FollowSets000.FOLLOW_51_in_ruleStatementExpression6106); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getStatementExpressionAccess().getStatementKeyword_1(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3524:1: ( (lv_children_2_0= ruleCompositeStatement ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3525:1: (lv_children_2_0= ruleCompositeStatement )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3525:1: (lv_children_2_0= ruleCompositeStatement )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3526:3: lv_children_2_0= ruleCompositeStatement
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getStatementExpressionAccess().getChildrenCompositeStatementParserRuleCall_2_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_ruleStatementExpression6127);
            lv_children_2_0=ruleCompositeStatement();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getStatementExpressionRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		add(
              	       			current, 
              	       			"children",
              	        		lv_children_2_0, 
              	        		"CompositeStatement", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStatementExpression


    // $ANTLR start entryRuleBooleanExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3556:1: entryRuleBooleanExpression returns [EObject current=null] : iv_ruleBooleanExpression= ruleBooleanExpression EOF ;
    public final EObject entryRuleBooleanExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3557:2: (iv_ruleBooleanExpression= ruleBooleanExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3558:2: iv_ruleBooleanExpression= ruleBooleanExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getBooleanExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression6163);
            iv_ruleBooleanExpression=ruleBooleanExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleBooleanExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanExpression6173); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBooleanExpression


    // $ANTLR start ruleBooleanExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3565:1: ruleBooleanExpression returns [EObject current=null] : (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* ) ;
    public final EObject ruleBooleanExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        EObject this_BooleanTerm_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3570:6: ( (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3571:1: (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3571:1: (this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3572:2: this_BooleanTerm_0= ruleBooleanTerm ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )*
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getBooleanExpressionAccess().getBooleanTermParserRuleCall_0(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression6223);
            this_BooleanTerm_0=ruleBooleanTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_BooleanTerm_0; 
                      currentNode = currentNode.getParent();
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:1: ( () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) ) )*
            loop46:
            do {
                int alt46=2;
                int LA46_0 = input.LA(1);

                if ( (LA46_0==52) ) {
                    int LA46_5 = input.LA(2);

                    if ( (synpred64()) ) {
                        alt46=1;
                    }


                }
                else if ( (LA46_0==53) ) {
                    int LA46_6 = input.LA(2);

                    if ( (synpred64()) ) {
                        alt46=1;
                    }


                }


                switch (alt46) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:2: () ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) ) ( (lv_children_3_0= ruleBooleanTerm ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:2: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3584:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getBooleanExpressionAccess().getExpressionChildrenAction_1_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getBooleanExpressionAccess().getExpressionChildrenAction_1_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3602:2: ( ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3603:1: ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3603:1: ( (lv_operator_2_1= '&&' | lv_operator_2_2= '||' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3604:1: (lv_operator_2_1= '&&' | lv_operator_2_2= '||' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3604:1: (lv_operator_2_1= '&&' | lv_operator_2_2= '||' )
            	    int alt45=2;
            	    int LA45_0 = input.LA(1);

            	    if ( (LA45_0==52) ) {
            	        alt45=1;
            	    }
            	    else if ( (LA45_0==53) ) {
            	        alt45=2;
            	    }
            	    else {
            	        if (backtracking>0) {failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("3604:1: (lv_operator_2_1= '&&' | lv_operator_2_2= '||' )", 45, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt45) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3605:3: lv_operator_2_1= '&&'
            	            {
            	            lv_operator_2_1=(Token)input.LT(1);
            	            match(input,52,FollowSets000.FOLLOW_52_in_ruleBooleanExpression6255); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getBooleanExpressionAccess().getOperatorAmpersandAmpersandKeyword_1_1_0_0(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getBooleanExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_1, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3623:8: lv_operator_2_2= '||'
            	            {
            	            lv_operator_2_2=(Token)input.LT(1);
            	            match(input,53,FollowSets000.FOLLOW_53_in_ruleBooleanExpression6284); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getBooleanExpressionAccess().getOperatorVerticalLineVerticalLineKeyword_1_1_0_1(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getBooleanExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_2, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3644:2: ( (lv_children_3_0= ruleBooleanTerm ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3645:1: (lv_children_3_0= ruleBooleanTerm )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3645:1: (lv_children_3_0= ruleBooleanTerm )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3646:3: lv_children_3_0= ruleBooleanTerm
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getBooleanExpressionAccess().getChildrenBooleanTermParserRuleCall_1_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression6321);
            	    lv_children_3_0=ruleBooleanTerm();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getBooleanExpressionRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"BooleanTerm", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop46;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBooleanExpression


    // $ANTLR start entryRuleBooleanTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3676:1: entryRuleBooleanTerm returns [EObject current=null] : iv_ruleBooleanTerm= ruleBooleanTerm EOF ;
    public final EObject entryRuleBooleanTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanTerm = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3677:2: (iv_ruleBooleanTerm= ruleBooleanTerm EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3678:2: iv_ruleBooleanTerm= ruleBooleanTerm EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getBooleanTermRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_entryRuleBooleanTerm6359);
            iv_ruleBooleanTerm=ruleBooleanTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleBooleanTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBooleanTerm6369); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBooleanTerm


    // $ANTLR start ruleBooleanTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3685:1: ruleBooleanTerm returns [EObject current=null] : ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) | ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) ) ) ;
    public final EObject ruleBooleanTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        Token lv_operator_2_5=null;
        Token lv_operator_2_6=null;
        EObject this_AdditionExpression_0 = null;

        EObject lv_children_3_0 = null;

        AntlrDatatypeRuleToken lv_value_5_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3690:6: ( ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) | ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3691:1: ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) | ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3691:1: ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) | ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) ) )
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( ((LA49_0>=RULE_ID && LA49_0<=RULE_INT)||LA49_0==17||LA49_0==34||LA49_0==50||LA49_0==67||(LA49_0>=71 && LA49_0<=80)) ) {
                alt49=1;
            }
            else if ( ((LA49_0>=87 && LA49_0<=88)) ) {
                alt49=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("3691:1: ( (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? ) | ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) ) )", 49, 0, input);

                throw nvae;
            }
            switch (alt49) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3691:2: (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3691:2: (this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )? )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3692:2: this_AdditionExpression_0= ruleAdditionExpression ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )?
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getBooleanTermAccess().getAdditionExpressionParserRuleCall_0_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm6420);
                    this_AdditionExpression_0=ruleAdditionExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_AdditionExpression_0; 
                              currentNode = currentNode.getParent();
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:1: ( () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) ) )?
                    int alt48=2;
                    switch ( input.LA(1) ) {
                        case 54:
                            {
                            int LA48_1 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                        case 55:
                            {
                            int LA48_2 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                        case 56:
                            {
                            int LA48_3 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                        case 57:
                            {
                            int LA48_4 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                        case 58:
                            {
                            int LA48_5 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                        case 59:
                            {
                            int LA48_6 = input.LA(2);

                            if ( (synpred70()) ) {
                                alt48=1;
                            }
                            }
                            break;
                    }

                    switch (alt48) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:2: () ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) ) ( (lv_children_3_0= ruleAdditionExpression ) )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:2: ()
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3704:2: 
                            {
                            if ( backtracking==0 ) {
                               
                              	  /* */ 
                              	
                            }
                            if ( backtracking==0 ) {
                               
                                      temp=factory.create(grammarAccess.getBooleanTermAccess().getExpressionChildrenAction_0_1_0().getType().getClassifier());
                                      try {
                                      	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
                                      } catch(ValueConverterException vce) {
                                      	handleValueConverterException(vce);
                                      }
                                      current = temp; 
                                      temp = null;
                                      CompositeNode newNode = createCompositeNode(grammarAccess.getBooleanTermAccess().getExpressionChildrenAction_0_1_0(), currentNode.getParent());
                                  newNode.getChildren().add(currentNode);
                                  moveLookaheadInfo(currentNode, newNode);
                                  currentNode = newNode; 
                                      associateNodeWithAstElement(currentNode, current); 
                                  
                            }

                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3722:2: ( ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3723:1: ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3723:1: ( (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3724:1: (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3724:1: (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' )
                            int alt47=6;
                            switch ( input.LA(1) ) {
                            case 54:
                                {
                                alt47=1;
                                }
                                break;
                            case 55:
                                {
                                alt47=2;
                                }
                                break;
                            case 56:
                                {
                                alt47=3;
                                }
                                break;
                            case 57:
                                {
                                alt47=4;
                                }
                                break;
                            case 58:
                                {
                                alt47=5;
                                }
                                break;
                            case 59:
                                {
                                alt47=6;
                                }
                                break;
                            default:
                                if (backtracking>0) {failed=true; return current;}
                                NoViableAltException nvae =
                                    new NoViableAltException("3724:1: (lv_operator_2_1= '>' | lv_operator_2_2= '<' | lv_operator_2_3= '<=' | lv_operator_2_4= '>=' | lv_operator_2_5= '==' | lv_operator_2_6= '!=' )", 47, 0, input);

                                throw nvae;
                            }

                            switch (alt47) {
                                case 1 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3725:3: lv_operator_2_1= '>'
                                    {
                                    lv_operator_2_1=(Token)input.LT(1);
                                    match(input,54,FollowSets000.FOLLOW_54_in_ruleBooleanTerm6452); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorGreaterThanSignKeyword_0_1_1_0_0(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_1, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;
                                case 2 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3743:8: lv_operator_2_2= '<'
                                    {
                                    lv_operator_2_2=(Token)input.LT(1);
                                    match(input,55,FollowSets000.FOLLOW_55_in_ruleBooleanTerm6481); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorLessThanSignKeyword_0_1_1_0_1(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_2, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;
                                case 3 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3761:8: lv_operator_2_3= '<='
                                    {
                                    lv_operator_2_3=(Token)input.LT(1);
                                    match(input,56,FollowSets000.FOLLOW_56_in_ruleBooleanTerm6510); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorLessThanSignEqualsSignKeyword_0_1_1_0_2(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_3, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;
                                case 4 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3779:8: lv_operator_2_4= '>='
                                    {
                                    lv_operator_2_4=(Token)input.LT(1);
                                    match(input,57,FollowSets000.FOLLOW_57_in_ruleBooleanTerm6539); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorGreaterThanSignEqualsSignKeyword_0_1_1_0_3(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_4, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;
                                case 5 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3797:8: lv_operator_2_5= '=='
                                    {
                                    lv_operator_2_5=(Token)input.LT(1);
                                    match(input,58,FollowSets000.FOLLOW_58_in_ruleBooleanTerm6568); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorEqualsSignEqualsSignKeyword_0_1_1_0_4(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_5, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;
                                case 6 :
                                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3815:8: lv_operator_2_6= '!='
                                    {
                                    lv_operator_2_6=(Token)input.LT(1);
                                    match(input,59,FollowSets000.FOLLOW_59_in_ruleBooleanTerm6597); if (failed) return current;
                                    if ( backtracking==0 ) {

                                              createLeafNode(grammarAccess.getBooleanTermAccess().getOperatorExclamationMarkEqualsSignKeyword_0_1_1_0_5(), "operator"); 
                                          
                                    }
                                    if ( backtracking==0 ) {

                                      	        if (current==null) {
                                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                                      	            associateNodeWithAstElement(currentNode, current);
                                      	        }
                                      	        
                                      	        try {
                                      	       		set(current, "operator", lv_operator_2_6, null, lastConsumedNode);
                                      	        } catch (ValueConverterException vce) {
                                      				handleValueConverterException(vce);
                                      	        }
                                      	    
                                    }

                                    }
                                    break;

                            }


                            }


                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3836:2: ( (lv_children_3_0= ruleAdditionExpression ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3837:1: (lv_children_3_0= ruleAdditionExpression )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3837:1: (lv_children_3_0= ruleAdditionExpression )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3838:3: lv_children_3_0= ruleAdditionExpression
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getBooleanTermAccess().getChildrenAdditionExpressionParserRuleCall_0_1_2_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm6634);
                            lv_children_3_0=ruleAdditionExpression();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_3_0, 
                              	        		"AdditionExpression", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3861:6: ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3861:6: ( () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3861:7: () ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3861:7: ()
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3862:2: 
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              temp=factory.create(grammarAccess.getBooleanTermAccess().getExpressionAction_1_0().getType().getClassifier());
                              current = temp; 
                              temp = null;
                              CompositeNode newNode = createCompositeNode(grammarAccess.getBooleanTermAccess().getExpressionAction_1_0(), currentNode.getParent());
                          newNode.getChildren().add(currentNode);
                          moveLookaheadInfo(currentNode, newNode);
                          currentNode = newNode; 
                              associateNodeWithAstElement(currentNode, current); 
                          
                    }

                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3875:2: ( (lv_value_5_0= ruleBOOLEAN_CONSTANTS ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3876:1: (lv_value_5_0= ruleBOOLEAN_CONSTANTS )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3876:1: (lv_value_5_0= ruleBOOLEAN_CONSTANTS )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3877:3: lv_value_5_0= ruleBOOLEAN_CONSTANTS
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getBooleanTermAccess().getValueBOOLEAN_CONSTANTSParserRuleCall_1_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleBOOLEAN_CONSTANTS_in_ruleBooleanTerm6677);
                    lv_value_5_0=ruleBOOLEAN_CONSTANTS();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getBooleanTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"value",
                      	        		lv_value_5_0, 
                      	        		"BOOLEAN_CONSTANTS", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBooleanTerm


    // $ANTLR start entryRuleAdditionExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3907:1: entryRuleAdditionExpression returns [EObject current=null] : iv_ruleAdditionExpression= ruleAdditionExpression EOF ;
    public final EObject entryRuleAdditionExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAdditionExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3908:2: (iv_ruleAdditionExpression= ruleAdditionExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3909:2: iv_ruleAdditionExpression= ruleAdditionExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getAdditionExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_entryRuleAdditionExpression6714);
            iv_ruleAdditionExpression=ruleAdditionExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleAdditionExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAdditionExpression6724); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAdditionExpression


    // $ANTLR start ruleAdditionExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3916:1: ruleAdditionExpression returns [EObject current=null] : (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* ) ;
    public final EObject ruleAdditionExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        EObject this_MulExpression_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3921:6: ( (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3922:1: (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3922:1: (this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3923:2: this_MulExpression_0= ruleMulExpression ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )*
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getAdditionExpressionAccess().getMulExpressionParserRuleCall_0(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_ruleAdditionExpression6774);
            this_MulExpression_0=ruleMulExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_MulExpression_0; 
                      currentNode = currentNode.getParent();
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:1: ( () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) ) )*
            loop51:
            do {
                int alt51=2;
                int LA51_0 = input.LA(1);

                if ( (LA51_0==60) ) {
                    int LA51_5 = input.LA(2);

                    if ( (synpred73()) ) {
                        alt51=1;
                    }


                }
                else if ( (LA51_0==61) ) {
                    int LA51_6 = input.LA(2);

                    if ( (synpred73()) ) {
                        alt51=1;
                    }


                }


                switch (alt51) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:2: () ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) ) ( (lv_children_3_0= ruleMulExpression ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:2: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3935:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getAdditionExpressionAccess().getExpressionChildrenAction_1_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getAdditionExpressionAccess().getExpressionChildrenAction_1_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3953:2: ( ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3954:1: ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3954:1: ( (lv_operator_2_1= '+' | lv_operator_2_2= '-' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3955:1: (lv_operator_2_1= '+' | lv_operator_2_2= '-' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3955:1: (lv_operator_2_1= '+' | lv_operator_2_2= '-' )
            	    int alt50=2;
            	    int LA50_0 = input.LA(1);

            	    if ( (LA50_0==60) ) {
            	        alt50=1;
            	    }
            	    else if ( (LA50_0==61) ) {
            	        alt50=2;
            	    }
            	    else {
            	        if (backtracking>0) {failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("3955:1: (lv_operator_2_1= '+' | lv_operator_2_2= '-' )", 50, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt50) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3956:3: lv_operator_2_1= '+'
            	            {
            	            lv_operator_2_1=(Token)input.LT(1);
            	            match(input,60,FollowSets000.FOLLOW_60_in_ruleAdditionExpression6806); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getAdditionExpressionAccess().getOperatorPlusSignKeyword_1_1_0_0(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getAdditionExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_1, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3974:8: lv_operator_2_2= '-'
            	            {
            	            lv_operator_2_2=(Token)input.LT(1);
            	            match(input,61,FollowSets000.FOLLOW_61_in_ruleAdditionExpression6835); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getAdditionExpressionAccess().getOperatorHyphenMinusKeyword_1_1_0_1(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getAdditionExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_2, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3995:2: ( (lv_children_3_0= ruleMulExpression ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3996:1: (lv_children_3_0= ruleMulExpression )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3996:1: (lv_children_3_0= ruleMulExpression )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3997:3: lv_children_3_0= ruleMulExpression
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getAdditionExpressionAccess().getChildrenMulExpressionParserRuleCall_1_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_ruleAdditionExpression6872);
            	    lv_children_3_0=ruleMulExpression();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getAdditionExpressionRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"MulExpression", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop51;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAdditionExpression


    // $ANTLR start entryRuleMulExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4027:1: entryRuleMulExpression returns [EObject current=null] : iv_ruleMulExpression= ruleMulExpression EOF ;
    public final EObject entryRuleMulExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMulExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4028:2: (iv_ruleMulExpression= ruleMulExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4029:2: iv_ruleMulExpression= ruleMulExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getMulExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_entryRuleMulExpression6910);
            iv_ruleMulExpression=ruleMulExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleMulExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMulExpression6920); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleMulExpression


    // $ANTLR start ruleMulExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4036:1: ruleMulExpression returns [EObject current=null] : (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* ) ;
    public final EObject ruleMulExpression() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_1=null;
        Token lv_operator_2_2=null;
        Token lv_operator_2_3=null;
        Token lv_operator_2_4=null;
        Token lv_operator_2_5=null;
        EObject this_Term_0 = null;

        EObject lv_children_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4041:6: ( (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4042:1: (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4042:1: (this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4043:2: this_Term_0= ruleTerm ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )*
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getMulExpressionAccess().getTermParserRuleCall_0(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleMulExpression6970);
            this_Term_0=ruleTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_Term_0; 
                      currentNode = currentNode.getParent();
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:1: ( () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) ) )*
            loop53:
            do {
                int alt53=2;
                switch ( input.LA(1) ) {
                case 62:
                    {
                    int LA53_5 = input.LA(2);

                    if ( (synpred78()) ) {
                        alt53=1;
                    }


                    }
                    break;
                case 63:
                    {
                    int LA53_6 = input.LA(2);

                    if ( (synpred78()) ) {
                        alt53=1;
                    }


                    }
                    break;
                case 64:
                    {
                    int LA53_7 = input.LA(2);

                    if ( (synpred78()) ) {
                        alt53=1;
                    }


                    }
                    break;
                case 65:
                    {
                    int LA53_8 = input.LA(2);

                    if ( (synpred78()) ) {
                        alt53=1;
                    }


                    }
                    break;
                case 66:
                    {
                    int LA53_9 = input.LA(2);

                    if ( (synpred78()) ) {
                        alt53=1;
                    }


                    }
                    break;

                }

                switch (alt53) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:2: () ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) ) ( (lv_children_3_0= ruleTerm ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:2: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4055:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getMulExpressionAccess().getExpressionChildrenAction_1_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getMulExpressionAccess().getExpressionChildrenAction_1_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4073:2: ( ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4074:1: ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4074:1: ( (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4075:1: (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4075:1: (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' )
            	    int alt52=5;
            	    switch ( input.LA(1) ) {
            	    case 62:
            	        {
            	        alt52=1;
            	        }
            	        break;
            	    case 63:
            	        {
            	        alt52=2;
            	        }
            	        break;
            	    case 64:
            	        {
            	        alt52=3;
            	        }
            	        break;
            	    case 65:
            	        {
            	        alt52=4;
            	        }
            	        break;
            	    case 66:
            	        {
            	        alt52=5;
            	        }
            	        break;
            	    default:
            	        if (backtracking>0) {failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("4075:1: (lv_operator_2_1= '*' | lv_operator_2_2= '/' | lv_operator_2_3= '%' | lv_operator_2_4= '<<' | lv_operator_2_5= '>>' )", 52, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt52) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4076:3: lv_operator_2_1= '*'
            	            {
            	            lv_operator_2_1=(Token)input.LT(1);
            	            match(input,62,FollowSets000.FOLLOW_62_in_ruleMulExpression7002); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getMulExpressionAccess().getOperatorAsteriskKeyword_1_1_0_0(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_1, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4094:8: lv_operator_2_2= '/'
            	            {
            	            lv_operator_2_2=(Token)input.LT(1);
            	            match(input,63,FollowSets000.FOLLOW_63_in_ruleMulExpression7031); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getMulExpressionAccess().getOperatorSolidusKeyword_1_1_0_1(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_2, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 3 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4112:8: lv_operator_2_3= '%'
            	            {
            	            lv_operator_2_3=(Token)input.LT(1);
            	            match(input,64,FollowSets000.FOLLOW_64_in_ruleMulExpression7060); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getMulExpressionAccess().getOperatorPercentSignKeyword_1_1_0_2(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_3, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 4 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4130:8: lv_operator_2_4= '<<'
            	            {
            	            lv_operator_2_4=(Token)input.LT(1);
            	            match(input,65,FollowSets000.FOLLOW_65_in_ruleMulExpression7089); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getMulExpressionAccess().getOperatorLessThanSignLessThanSignKeyword_1_1_0_3(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_4, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;
            	        case 5 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4148:8: lv_operator_2_5= '>>'
            	            {
            	            lv_operator_2_5=(Token)input.LT(1);
            	            match(input,66,FollowSets000.FOLLOW_66_in_ruleMulExpression7118); if (failed) return current;
            	            if ( backtracking==0 ) {

            	                      createLeafNode(grammarAccess.getMulExpressionAccess().getOperatorGreaterThanSignGreaterThanSignKeyword_1_1_0_4(), "operator"); 
            	                  
            	            }
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode, current);
            	              	        }
            	              	        
            	              	        try {
            	              	       		set(current, "operator", lv_operator_2_5, null, lastConsumedNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	    
            	            }

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4169:2: ( (lv_children_3_0= ruleTerm ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4170:1: (lv_children_3_0= ruleTerm )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4170:1: (lv_children_3_0= ruleTerm )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4171:3: lv_children_3_0= ruleTerm
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getMulExpressionAccess().getChildrenTermParserRuleCall_1_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleMulExpression7155);
            	    lv_children_3_0=ruleTerm();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getMulExpressionRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"Term", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop53;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleMulExpression


    // $ANTLR start entryRuleTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4201:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ;
    public final EObject entryRuleTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerm = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4202:2: (iv_ruleTerm= ruleTerm EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4203:2: iv_ruleTerm= ruleTerm EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getTermRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleTerm_in_entryRuleTerm7193);
            iv_ruleTerm=ruleTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTerm7203); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTerm


    // $ANTLR start ruleTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4210:1: ruleTerm returns [EObject current=null] : ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | this_ComplexTerm_3= ruleComplexTerm ) ;
    public final EObject ruleTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        EObject lv_children_2_0 = null;

        EObject this_ComplexTerm_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4215:6: ( ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | this_ComplexTerm_3= ruleComplexTerm ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:1: ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | this_ComplexTerm_3= ruleComplexTerm )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:1: ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | this_ComplexTerm_3= ruleComplexTerm )
            int alt54=2;
            int LA54_0 = input.LA(1);

            if ( (LA54_0==67) ) {
                alt54=1;
            }
            else if ( ((LA54_0>=RULE_ID && LA54_0<=RULE_INT)||LA54_0==17||LA54_0==34||LA54_0==50||(LA54_0>=71 && LA54_0<=80)) ) {
                alt54=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("4216:1: ( ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) ) | this_ComplexTerm_3= ruleComplexTerm )", 54, 0, input);

                throw nvae;
            }
            switch (alt54) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:2: ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:2: ( () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:3: () ( (lv_operator_1_0= '!' ) ) ( (lv_children_2_0= ruleTerm ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4216:3: ()
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4217:2: 
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              temp=factory.create(grammarAccess.getTermAccess().getExpressionAction_0_0().getType().getClassifier());
                              current = temp; 
                              temp = null;
                              CompositeNode newNode = createCompositeNode(grammarAccess.getTermAccess().getExpressionAction_0_0(), currentNode.getParent());
                          newNode.getChildren().add(currentNode);
                          moveLookaheadInfo(currentNode, newNode);
                          currentNode = newNode; 
                              associateNodeWithAstElement(currentNode, current); 
                          
                    }

                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4230:2: ( (lv_operator_1_0= '!' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4231:1: (lv_operator_1_0= '!' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4231:1: (lv_operator_1_0= '!' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4232:3: lv_operator_1_0= '!'
                    {
                    lv_operator_1_0=(Token)input.LT(1);
                    match(input,67,FollowSets000.FOLLOW_67_in_ruleTerm7259); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getTermAccess().getOperatorExclamationMarkKeyword_0_1_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_1_0, "!", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4251:2: ( (lv_children_2_0= ruleTerm ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4252:1: (lv_children_2_0= ruleTerm )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4252:1: (lv_children_2_0= ruleTerm )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4253:3: lv_children_2_0= ruleTerm
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getTermAccess().getChildrenTermParserRuleCall_0_2_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleTerm_in_ruleTerm7293);
                    lv_children_2_0=ruleTerm();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_2_0, 
                      	        		"Term", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4277:2: this_ComplexTerm_3= ruleComplexTerm
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getTermAccess().getComplexTermParserRuleCall_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleComplexTerm_in_ruleTerm7325);
                    this_ComplexTerm_3=ruleComplexTerm();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_ComplexTerm_3; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTerm


    // $ANTLR start entryRuleComplexTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4296:1: entryRuleComplexTerm returns [EObject current=null] : iv_ruleComplexTerm= ruleComplexTerm EOF ;
    public final EObject entryRuleComplexTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComplexTerm = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4297:2: (iv_ruleComplexTerm= ruleComplexTerm EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4298:2: iv_ruleComplexTerm= ruleComplexTerm EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getComplexTermRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleComplexTerm_in_entryRuleComplexTerm7360);
            iv_ruleComplexTerm=ruleComplexTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleComplexTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleComplexTerm7370); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleComplexTerm


    // $ANTLR start ruleComplexTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4305:1: ruleComplexTerm returns [EObject current=null] : (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )* ) ;
    public final EObject ruleComplexTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_2_0=null;
        Token lv_operator_5_0=null;
        Token lv_operator_11_0=null;
        EObject this_SimpleTerm_0 = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_6_0 = null;

        EObject lv_children_8_0 = null;

        EObject lv_children_12_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4310:6: ( (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4311:1: (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4311:1: (this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4312:2: this_SimpleTerm_0= ruleSimpleTerm ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )*
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getSimpleTermParserRuleCall_0(), currentNode); 
                  
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_ruleComplexTerm7420);
            this_SimpleTerm_0=ruleSimpleTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               
                      current = this_SimpleTerm_0; 
                      currentNode = currentNode.getParent();
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:1: ( ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) ) | ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' ) | ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' ) )*
            loop57:
            do {
                int alt57=4;
                switch ( input.LA(1) ) {
                case 17:
                    {
                    int LA57_2 = input.LA(2);

                    if ( (synpred83()) ) {
                        alt57=2;
                    }


                    }
                    break;
                case 68:
                    {
                    int LA57_6 = input.LA(2);

                    if ( (synpred80()) ) {
                        alt57=1;
                    }


                    }
                    break;
                case 69:
                    {
                    int LA57_7 = input.LA(2);

                    if ( (synpred84()) ) {
                        alt57=3;
                    }


                    }
                    break;

                }

                switch (alt57) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:2: ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:2: ( () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:3: () ( (lv_operator_2_0= '.' ) ) ( (lv_children_3_0= ruleSimpleTerm ) )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:3: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4324:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_0_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_0_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4342:2: ( (lv_operator_2_0= '.' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4343:1: (lv_operator_2_0= '.' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4343:1: (lv_operator_2_0= '.' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4344:3: lv_operator_2_0= '.'
            	    {
            	    lv_operator_2_0=(Token)input.LT(1);
            	    match(input,68,FollowSets000.FOLLOW_68_in_ruleComplexTerm7451); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getComplexTermAccess().getOperatorFullStopKeyword_1_0_1_0(), "operator"); 
            	          
            	    }
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode, current);
            	      	        }
            	      	        
            	      	        try {
            	      	       		set(current, "operator", lv_operator_2_0, ".", lastConsumedNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	    
            	    }

            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4363:2: ( (lv_children_3_0= ruleSimpleTerm ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4364:1: (lv_children_3_0= ruleSimpleTerm )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4364:1: (lv_children_3_0= ruleSimpleTerm )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4365:3: lv_children_3_0= ruleSimpleTerm
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenSimpleTermParserRuleCall_1_0_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_ruleComplexTerm7485);
            	    lv_children_3_0=ruleSimpleTerm();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_3_0, 
            	      	        		"SimpleTerm", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:6: ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:6: ( () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:7: () ( (lv_operator_5_0= '(' ) ) ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )? ')'
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:7: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4389:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_1_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_1_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4407:2: ( (lv_operator_5_0= '(' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4408:1: (lv_operator_5_0= '(' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4408:1: (lv_operator_5_0= '(' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4409:3: lv_operator_5_0= '('
            	    {
            	    lv_operator_5_0=(Token)input.LT(1);
            	    match(input,17,FollowSets000.FOLLOW_17_in_ruleComplexTerm7523); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getComplexTermAccess().getOperatorLeftParenthesisKeyword_1_1_1_0(), "operator"); 
            	          
            	    }
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode, current);
            	      	        }
            	      	        
            	      	        try {
            	      	       		set(current, "operator", lv_operator_5_0, "(", lastConsumedNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	    
            	    }

            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:2: ( ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )* )?
            	    int alt56=2;
            	    int LA56_0 = input.LA(1);

            	    if ( ((LA56_0>=RULE_ID && LA56_0<=RULE_INT)||LA56_0==17||LA56_0==25||(LA56_0>=33 && LA56_0<=34)||(LA56_0>=50 && LA56_0<=51)||LA56_0==67||(LA56_0>=71 && LA56_0<=80)||(LA56_0>=87 && LA56_0<=88)) ) {
            	        alt56=1;
            	    }
            	    switch (alt56) {
            	        case 1 :
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:3: ( (lv_children_6_0= ruleExpression ) ) ( ',' ( (lv_children_8_0= ruleExpression ) ) )*
            	            {
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:3: ( (lv_children_6_0= ruleExpression ) )
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4429:1: (lv_children_6_0= ruleExpression )
            	            {
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4429:1: (lv_children_6_0= ruleExpression )
            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4430:3: lv_children_6_0= ruleExpression
            	            {
            	            if ( backtracking==0 ) {
            	               
            	              	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_0_0(), currentNode); 
            	              	    
            	            }
            	            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm7558);
            	            lv_children_6_0=ruleExpression();
            	            _fsp--;
            	            if (failed) return current;
            	            if ( backtracking==0 ) {

            	              	        if (current==null) {
            	              	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	              	            associateNodeWithAstElement(currentNode.getParent(), current);
            	              	        }
            	              	        try {
            	              	       		add(
            	              	       			current, 
            	              	       			"children",
            	              	        		lv_children_6_0, 
            	              	        		"Expression", 
            	              	        		currentNode);
            	              	        } catch (ValueConverterException vce) {
            	              				handleValueConverterException(vce);
            	              	        }
            	              	        currentNode = currentNode.getParent();
            	              	    
            	            }

            	            }


            	            }

            	            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4452:2: ( ',' ( (lv_children_8_0= ruleExpression ) ) )*
            	            loop55:
            	            do {
            	                int alt55=2;
            	                int LA55_0 = input.LA(1);

            	                if ( (LA55_0==18) ) {
            	                    alt55=1;
            	                }


            	                switch (alt55) {
            	            	case 1 :
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4452:4: ',' ( (lv_children_8_0= ruleExpression ) )
            	            	    {
            	            	    match(input,18,FollowSets000.FOLLOW_18_in_ruleComplexTerm7569); if (failed) return current;
            	            	    if ( backtracking==0 ) {

            	            	              createLeafNode(grammarAccess.getComplexTermAccess().getCommaKeyword_1_1_2_1_0(), null); 
            	            	          
            	            	    }
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4456:1: ( (lv_children_8_0= ruleExpression ) )
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4457:1: (lv_children_8_0= ruleExpression )
            	            	    {
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4457:1: (lv_children_8_0= ruleExpression )
            	            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4458:3: lv_children_8_0= ruleExpression
            	            	    {
            	            	    if ( backtracking==0 ) {
            	            	       
            	            	      	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_1_1_0(), currentNode); 
            	            	      	    
            	            	    }
            	            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm7590);
            	            	    lv_children_8_0=ruleExpression();
            	            	    _fsp--;
            	            	    if (failed) return current;
            	            	    if ( backtracking==0 ) {

            	            	      	        if (current==null) {
            	            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	            	      	        }
            	            	      	        try {
            	            	      	       		add(
            	            	      	       			current, 
            	            	      	       			"children",
            	            	      	        		lv_children_8_0, 
            	            	      	        		"Expression", 
            	            	      	        		currentNode);
            	            	      	        } catch (ValueConverterException vce) {
            	            	      				handleValueConverterException(vce);
            	            	      	        }
            	            	      	        currentNode = currentNode.getParent();
            	            	      	    
            	            	    }

            	            	    }


            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop55;
            	                }
            	            } while (true);


            	            }
            	            break;

            	    }

            	    match(input,19,FollowSets000.FOLLOW_19_in_ruleComplexTerm7604); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getComplexTermAccess().getRightParenthesisKeyword_1_1_3(), null); 
            	          
            	    }

            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:6: ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:6: ( () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:7: () ( (lv_operator_11_0= '[' ) ) ( (lv_children_12_0= ruleExpression ) ) ']'
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:7: ()
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4486:2: 
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	  /* */ 
            	      	
            	    }
            	    if ( backtracking==0 ) {
            	       
            	              temp=factory.create(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_2_0().getType().getClassifier());
            	              try {
            	              	factory.add(temp, "children", current, null /*ParserRule*/, currentNode);
            	              } catch(ValueConverterException vce) {
            	              	handleValueConverterException(vce);
            	              }
            	              current = temp; 
            	              temp = null;
            	              CompositeNode newNode = createCompositeNode(grammarAccess.getComplexTermAccess().getExpressionChildrenAction_1_2_0(), currentNode.getParent());
            	          newNode.getChildren().add(currentNode);
            	          moveLookaheadInfo(currentNode, newNode);
            	          currentNode = newNode; 
            	              associateNodeWithAstElement(currentNode, current); 
            	          
            	    }

            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4504:2: ( (lv_operator_11_0= '[' ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4505:1: (lv_operator_11_0= '[' )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4505:1: (lv_operator_11_0= '[' )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4506:3: lv_operator_11_0= '['
            	    {
            	    lv_operator_11_0=(Token)input.LT(1);
            	    match(input,69,FollowSets000.FOLLOW_69_in_ruleComplexTerm7642); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getComplexTermAccess().getOperatorLeftSquareBracketKeyword_1_2_1_0(), "operator"); 
            	          
            	    }
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode, current);
            	      	        }
            	      	        
            	      	        try {
            	      	       		set(current, "operator", lv_operator_11_0, "[", lastConsumedNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	    
            	    }

            	    }


            	    }

            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4525:2: ( (lv_children_12_0= ruleExpression ) )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4526:1: (lv_children_12_0= ruleExpression )
            	    {
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4526:1: (lv_children_12_0= ruleExpression )
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4527:3: lv_children_12_0= ruleExpression
            	    {
            	    if ( backtracking==0 ) {
            	       
            	      	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_2_2_0(), currentNode); 
            	      	    
            	    }
            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleComplexTerm7676);
            	    lv_children_12_0=ruleExpression();
            	    _fsp--;
            	    if (failed) return current;
            	    if ( backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = factory.create(grammarAccess.getComplexTermRule().getType().getClassifier());
            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
            	      	        }
            	      	        try {
            	      	       		add(
            	      	       			current, 
            	      	       			"children",
            	      	        		lv_children_12_0, 
            	      	        		"Expression", 
            	      	        		currentNode);
            	      	        } catch (ValueConverterException vce) {
            	      				handleValueConverterException(vce);
            	      	        }
            	      	        currentNode = currentNode.getParent();
            	      	    
            	    }

            	    }


            	    }

            	    match(input,70,FollowSets000.FOLLOW_70_in_ruleComplexTerm7686); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              createLeafNode(grammarAccess.getComplexTermAccess().getRightSquareBracketKeyword_1_2_3(), null); 
            	          
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop57;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleComplexTerm


    // $ANTLR start entryRuleSimpleTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4561:1: entryRuleSimpleTerm returns [EObject current=null] : iv_ruleSimpleTerm= ruleSimpleTerm EOF ;
    public final EObject entryRuleSimpleTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleTerm = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4562:2: (iv_ruleSimpleTerm= ruleSimpleTerm EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4563:2: iv_ruleSimpleTerm= ruleSimpleTerm EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getSimpleTermRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_entryRuleSimpleTerm7725);
            iv_ruleSimpleTerm=ruleSimpleTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleSimpleTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSimpleTerm7735); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSimpleTerm


    // $ANTLR start ruleSimpleTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4570:1: ruleSimpleTerm returns [EObject current=null] : (this_LiteralExpression_0= ruleLiteralExpression | ( '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' ) | ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) ) | ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) ) | ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) ) | ( (lv_operator_24_0= 'null' ) ) ) ;
    public final EObject ruleSimpleTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_9_0=null;
        Token lv_operator_16_1=null;
        Token lv_operator_16_2=null;
        Token lv_operator_18_0=null;
        Token lv_operator_20_0=null;
        Token lv_operator_22_0=null;
        Token lv_operator_24_0=null;
        EObject this_LiteralExpression_0 = null;

        EObject this_VariableTerm_4 = null;

        EObject this_SimpleExpression_6 = null;

        EObject lv_children_12_0 = null;

        EObject lv_children_14_0 = null;

        EObject lv_children_17_0 = null;

        EObject lv_children_19_0 = null;

        EObject lv_children_21_0 = null;

        EObject lv_children_23_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4575:6: ( (this_LiteralExpression_0= ruleLiteralExpression | ( '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' ) | ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) ) | ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) ) | ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) ) | ( (lv_operator_24_0= 'null' ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4576:1: (this_LiteralExpression_0= ruleLiteralExpression | ( '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' ) | ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) ) | ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) ) | ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) ) | ( (lv_operator_24_0= 'null' ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4576:1: (this_LiteralExpression_0= ruleLiteralExpression | ( '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' ) | ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) ) | ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) ) | ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) ) | ( (lv_operator_24_0= 'null' ) ) )
            int alt61=10;
            switch ( input.LA(1) ) {
            case RULE_STRING:
            case RULE_VERBATIM_STRING:
            case RULE_INT:
                {
                alt61=1;
                }
                break;
            case 71:
                {
                alt61=2;
                }
                break;
            case RULE_ID:
            case 34:
            case 78:
            case 79:
            case 80:
                {
                alt61=3;
                }
                break;
            case 17:
                {
                alt61=4;
                }
                break;
            case 72:
                {
                alt61=5;
                }
                break;
            case 50:
            case 73:
                {
                alt61=6;
                }
                break;
            case 74:
                {
                alt61=7;
                }
                break;
            case 75:
                {
                alt61=8;
                }
                break;
            case 76:
                {
                alt61=9;
                }
                break;
            case 77:
                {
                alt61=10;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("4576:1: (this_LiteralExpression_0= ruleLiteralExpression | ( '@' () ( ( ruleQualifiedID ) ) ) | this_VariableTerm_4= ruleVariableTerm | ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' ) | ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' ) | ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) ) | ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) ) | ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) ) | ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) ) | ( (lv_operator_24_0= 'null' ) ) )", 61, 0, input);

                throw nvae;
            }

            switch (alt61) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4577:2: this_LiteralExpression_0= ruleLiteralExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getLiteralExpressionParserRuleCall_0(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleLiteralExpression_in_ruleSimpleTerm7785);
                    this_LiteralExpression_0=ruleLiteralExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_LiteralExpression_0; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4589:6: ( '@' () ( ( ruleQualifiedID ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4589:6: ( '@' () ( ( ruleQualifiedID ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4589:8: '@' () ( ( ruleQualifiedID ) )
                    {
                    match(input,71,FollowSets000.FOLLOW_71_in_ruleSimpleTerm7801); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getCommercialAtKeyword_1_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4593:1: ()
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4594:2: 
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              temp=factory.create(grammarAccess.getSimpleTermAccess().getConstantExpressionAction_1_1().getType().getClassifier());
                              current = temp; 
                              temp = null;
                              CompositeNode newNode = createCompositeNode(grammarAccess.getSimpleTermAccess().getConstantExpressionAction_1_1(), currentNode.getParent());
                          newNode.getChildren().add(currentNode);
                          moveLookaheadInfo(currentNode, newNode);
                          currentNode = newNode; 
                              associateNodeWithAstElement(currentNode, current); 
                          
                    }

                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4607:2: ( ( ruleQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4608:1: ( ruleQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4608:1: ( ruleQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4609:3: ruleQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      		  /* */ 
                      		
                    }
                    if ( backtracking==0 ) {

                      			if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                              
                    }
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getConstantConstantCrossReference_1_2_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleSimpleTerm7840);
                    ruleQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4628:2: this_VariableTerm_4= ruleVariableTerm
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getVariableTermParserRuleCall_2(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleVariableTerm_in_ruleSimpleTerm7872);
                    this_VariableTerm_4=ruleVariableTerm();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_VariableTerm_4; 
                              currentNode = currentNode.getParent();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4640:6: ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4640:6: ( '(' this_SimpleExpression_6= ruleSimpleExpression ')' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4640:8: '(' this_SimpleExpression_6= ruleSimpleExpression ')'
                    {
                    match(input,17,FollowSets000.FOLLOW_17_in_ruleSimpleTerm7888); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getLeftParenthesisKeyword_3_0(), null); 
                          
                    }
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getSimpleExpressionParserRuleCall_3_1(), currentNode); 
                          
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleSimpleExpression_in_ruleSimpleTerm7913);
                    this_SimpleExpression_6=ruleSimpleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                              current = this_SimpleExpression_6; 
                              currentNode = currentNode.getParent();
                          
                    }
                    match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm7922); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getRightParenthesisKeyword_3_2(), null); 
                          
                    }

                    }


                    }
                    break;
                case 5 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4661:6: ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4661:6: ( () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4661:7: () ( (lv_operator_9_0= 'new' ) ) ( ( ruleQualifiedID ) ) '(' ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )? ')'
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4661:7: ()
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4662:2: 
                    {
                    if ( backtracking==0 ) {
                       
                      	  /* */ 
                      	
                    }
                    if ( backtracking==0 ) {
                       
                              temp=factory.create(grammarAccess.getSimpleTermAccess().getNewExpressionAction_4_0().getType().getClassifier());
                              current = temp; 
                              temp = null;
                              CompositeNode newNode = createCompositeNode(grammarAccess.getSimpleTermAccess().getNewExpressionAction_4_0(), currentNode.getParent());
                          newNode.getChildren().add(currentNode);
                          moveLookaheadInfo(currentNode, newNode);
                          currentNode = newNode; 
                              associateNodeWithAstElement(currentNode, current); 
                          
                    }

                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4675:2: ( (lv_operator_9_0= 'new' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4676:1: (lv_operator_9_0= 'new' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4676:1: (lv_operator_9_0= 'new' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4677:3: lv_operator_9_0= 'new'
                    {
                    lv_operator_9_0=(Token)input.LT(1);
                    match(input,72,FollowSets000.FOLLOW_72_in_ruleSimpleTerm7960); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorNewKeyword_4_1_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_9_0, "new", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4696:2: ( ( ruleQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4697:1: ( ruleQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4697:1: ( ruleQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4698:3: ruleQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      		  /* */ 
                      		
                    }
                    if ( backtracking==0 ) {

                      			if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                              
                    }
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getTypeJavaTypeProxyCrossReference_4_2_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_ruleSimpleTerm8000);
                    ruleQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {
                       
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    match(input,17,FollowSets000.FOLLOW_17_in_ruleSimpleTerm8010); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getLeftParenthesisKeyword_4_3(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4719:1: ( ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )* )?
                    int alt59=2;
                    int LA59_0 = input.LA(1);

                    if ( ((LA59_0>=RULE_ID && LA59_0<=RULE_INT)||LA59_0==17||LA59_0==25||(LA59_0>=33 && LA59_0<=34)||(LA59_0>=50 && LA59_0<=51)||LA59_0==67||(LA59_0>=71 && LA59_0<=80)||(LA59_0>=87 && LA59_0<=88)) ) {
                        alt59=1;
                    }
                    switch (alt59) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4719:2: ( (lv_children_12_0= ruleExpression ) ) ( ',' ( (lv_children_14_0= ruleExpression ) ) )*
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4719:2: ( (lv_children_12_0= ruleExpression ) )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4720:1: (lv_children_12_0= ruleExpression )
                            {
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4720:1: (lv_children_12_0= ruleExpression )
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4721:3: lv_children_12_0= ruleExpression
                            {
                            if ( backtracking==0 ) {
                               
                              	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_4_4_0_0(), currentNode); 
                              	    
                            }
                            pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm8032);
                            lv_children_12_0=ruleExpression();
                            _fsp--;
                            if (failed) return current;
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode.getParent(), current);
                              	        }
                              	        try {
                              	       		add(
                              	       			current, 
                              	       			"children",
                              	        		lv_children_12_0, 
                              	        		"Expression", 
                              	        		currentNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	        currentNode = currentNode.getParent();
                              	    
                            }

                            }


                            }

                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4743:2: ( ',' ( (lv_children_14_0= ruleExpression ) ) )*
                            loop58:
                            do {
                                int alt58=2;
                                int LA58_0 = input.LA(1);

                                if ( (LA58_0==18) ) {
                                    alt58=1;
                                }


                                switch (alt58) {
                            	case 1 :
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4743:4: ',' ( (lv_children_14_0= ruleExpression ) )
                            	    {
                            	    match(input,18,FollowSets000.FOLLOW_18_in_ruleSimpleTerm8043); if (failed) return current;
                            	    if ( backtracking==0 ) {

                            	              createLeafNode(grammarAccess.getSimpleTermAccess().getCommaKeyword_4_4_1_0(), null); 
                            	          
                            	    }
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4747:1: ( (lv_children_14_0= ruleExpression ) )
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4748:1: (lv_children_14_0= ruleExpression )
                            	    {
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4748:1: (lv_children_14_0= ruleExpression )
                            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4749:3: lv_children_14_0= ruleExpression
                            	    {
                            	    if ( backtracking==0 ) {
                            	       
                            	      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_4_4_1_1_0(), currentNode); 
                            	      	    
                            	    }
                            	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm8064);
                            	    lv_children_14_0=ruleExpression();
                            	    _fsp--;
                            	    if (failed) return current;
                            	    if ( backtracking==0 ) {

                            	      	        if (current==null) {
                            	      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                            	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                            	      	        }
                            	      	        try {
                            	      	       		add(
                            	      	       			current, 
                            	      	       			"children",
                            	      	        		lv_children_14_0, 
                            	      	        		"Expression", 
                            	      	        		currentNode);
                            	      	        } catch (ValueConverterException vce) {
                            	      				handleValueConverterException(vce);
                            	      	        }
                            	      	        currentNode = currentNode.getParent();
                            	      	    
                            	    }

                            	    }


                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop58;
                                }
                            } while (true);


                            }
                            break;

                    }

                    match(input,19,FollowSets000.FOLLOW_19_in_ruleSimpleTerm8078); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getRightParenthesisKeyword_4_5(), null); 
                          
                    }

                    }


                    }
                    break;
                case 6 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4776:6: ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4776:6: ( ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4776:7: ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) ) ( (lv_children_17_0= ruleExpression ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4776:7: ( ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4777:1: ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4777:1: ( (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4778:1: (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4778:1: (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' )
                    int alt60=2;
                    int LA60_0 = input.LA(1);

                    if ( (LA60_0==50) ) {
                        alt60=1;
                    }
                    else if ( (LA60_0==73) ) {
                        alt60=2;
                    }
                    else {
                        if (backtracking>0) {failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("4778:1: (lv_operator_16_1= 'evaluate' | lv_operator_16_2= 'execute' )", 60, 0, input);

                        throw nvae;
                    }
                    switch (alt60) {
                        case 1 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4779:3: lv_operator_16_1= 'evaluate'
                            {
                            lv_operator_16_1=(Token)input.LT(1);
                            match(input,50,FollowSets000.FOLLOW_50_in_ruleSimpleTerm8106); if (failed) return current;
                            if ( backtracking==0 ) {

                                      createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorEvaluateKeyword_5_0_0_0(), "operator"); 
                                  
                            }
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode, current);
                              	        }
                              	        
                              	        try {
                              	       		set(current, "operator", lv_operator_16_1, null, lastConsumedNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	    
                            }

                            }
                            break;
                        case 2 :
                            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4797:8: lv_operator_16_2= 'execute'
                            {
                            lv_operator_16_2=(Token)input.LT(1);
                            match(input,73,FollowSets000.FOLLOW_73_in_ruleSimpleTerm8135); if (failed) return current;
                            if ( backtracking==0 ) {

                                      createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorExecuteKeyword_5_0_0_1(), "operator"); 
                                  
                            }
                            if ( backtracking==0 ) {

                              	        if (current==null) {
                              	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                              	            associateNodeWithAstElement(currentNode, current);
                              	        }
                              	        
                              	        try {
                              	       		set(current, "operator", lv_operator_16_2, null, lastConsumedNode);
                              	        } catch (ValueConverterException vce) {
                              				handleValueConverterException(vce);
                              	        }
                              	    
                            }

                            }
                            break;

                    }


                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4818:2: ( (lv_children_17_0= ruleExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4819:1: (lv_children_17_0= ruleExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4819:1: (lv_children_17_0= ruleExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4820:3: lv_children_17_0= ruleExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenExpressionParserRuleCall_5_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_ruleSimpleTerm8172);
                    lv_children_17_0=ruleExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_17_0, 
                      	        		"Expression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 7 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4843:6: ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4843:6: ( ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4843:7: ( (lv_operator_18_0= 'job' ) ) ( (lv_children_19_0= ruleStatement ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4843:7: ( (lv_operator_18_0= 'job' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4844:1: (lv_operator_18_0= 'job' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4844:1: (lv_operator_18_0= 'job' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4845:3: lv_operator_18_0= 'job'
                    {
                    lv_operator_18_0=(Token)input.LT(1);
                    match(input,74,FollowSets000.FOLLOW_74_in_ruleSimpleTerm8198); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorJobKeyword_6_0_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_18_0, "job", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4864:2: ( (lv_children_19_0= ruleStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4865:1: (lv_children_19_0= ruleStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4865:1: (lv_children_19_0= ruleStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4866:3: lv_children_19_0= ruleStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenStatementParserRuleCall_6_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleSimpleTerm8232);
                    lv_children_19_0=ruleStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_19_0, 
                      	        		"Statement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 8 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4889:6: ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4889:6: ( ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4889:7: ( (lv_operator_20_0= 'nameresolver' ) ) ( (lv_children_21_0= ruleStatement ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4889:7: ( (lv_operator_20_0= 'nameresolver' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4890:1: (lv_operator_20_0= 'nameresolver' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4890:1: (lv_operator_20_0= 'nameresolver' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4891:3: lv_operator_20_0= 'nameresolver'
                    {
                    lv_operator_20_0=(Token)input.LT(1);
                    match(input,75,FollowSets000.FOLLOW_75_in_ruleSimpleTerm8258); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorNameresolverKeyword_7_0_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_20_0, "nameresolver", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4910:2: ( (lv_children_21_0= ruleStatement ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4911:1: (lv_children_21_0= ruleStatement )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4911:1: (lv_children_21_0= ruleStatement )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4912:3: lv_children_21_0= ruleStatement
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenStatementParserRuleCall_7_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleStatement_in_ruleSimpleTerm8292);
                    lv_children_21_0=ruleStatement();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_21_0, 
                      	        		"Statement", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 9 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4935:6: ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4935:6: ( ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4935:7: ( (lv_operator_22_0= 'ref' ) ) ( (lv_children_23_0= rulePatternExpression ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4935:7: ( (lv_operator_22_0= 'ref' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4936:1: (lv_operator_22_0= 'ref' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4936:1: (lv_operator_22_0= 'ref' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4937:3: lv_operator_22_0= 'ref'
                    {
                    lv_operator_22_0=(Token)input.LT(1);
                    match(input,76,FollowSets000.FOLLOW_76_in_ruleSimpleTerm8318); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorRefKeyword_8_0_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_22_0, "ref", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4956:2: ( (lv_children_23_0= rulePatternExpression ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4957:1: (lv_children_23_0= rulePatternExpression )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4957:1: (lv_children_23_0= rulePatternExpression )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4958:3: lv_children_23_0= rulePatternExpression
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getSimpleTermAccess().getChildrenPatternExpressionParserRuleCall_8_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_rulePatternExpression_in_ruleSimpleTerm8352);
                    lv_children_23_0=rulePatternExpression();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_23_0, 
                      	        		"PatternExpression", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;
                case 10 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4981:6: ( (lv_operator_24_0= 'null' ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4981:6: ( (lv_operator_24_0= 'null' ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4982:1: (lv_operator_24_0= 'null' )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4982:1: (lv_operator_24_0= 'null' )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4983:3: lv_operator_24_0= 'null'
                    {
                    lv_operator_24_0=(Token)input.LT(1);
                    match(input,77,FollowSets000.FOLLOW_77_in_ruleSimpleTerm8377); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getSimpleTermAccess().getOperatorNullKeyword_9_0(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getSimpleTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_24_0, "null", lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSimpleTerm


    // $ANTLR start entryRuleVariableTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5010:1: entryRuleVariableTerm returns [EObject current=null] : iv_ruleVariableTerm= ruleVariableTerm EOF ;
    public final EObject entryRuleVariableTerm() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariableTerm = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5011:2: (iv_ruleVariableTerm= ruleVariableTerm EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5012:2: iv_ruleVariableTerm= ruleVariableTerm EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getVariableTermRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleVariableTerm_in_entryRuleVariableTerm8426);
            iv_ruleVariableTerm=ruleVariableTerm();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleVariableTerm; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVariableTerm8436); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVariableTerm


    // $ANTLR start ruleVariableTerm
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5019:1: ruleVariableTerm returns [EObject current=null] : ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) ) ;
    public final EObject ruleVariableTerm() throws RecognitionException {
        EObject current = null;

        Token lv_operator_0_1=null;
        Token lv_operator_0_2=null;
        Token lv_operator_0_3=null;
        Token lv_operator_0_4=null;
        Token lv_operator_0_5=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5024:6: ( ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5025:1: ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5025:1: ( ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5026:1: ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5026:1: ( (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5027:1: (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5027:1: (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' )
            int alt62=5;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt62=1;
                }
                break;
            case 78:
                {
                alt62=2;
                }
                break;
            case 79:
                {
                alt62=3;
                }
                break;
            case 80:
                {
                alt62=4;
                }
                break;
            case 34:
                {
                alt62=5;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("5027:1: (lv_operator_0_1= RULE_ID | lv_operator_0_2= 'this' | lv_operator_0_3= 'begin' | lv_operator_0_4= 'end' | lv_operator_0_5= 'arguments' )", 62, 0, input);

                throw nvae;
            }

            switch (alt62) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5028:3: lv_operator_0_1= RULE_ID
                    {
                    lv_operator_0_1=(Token)input.LT(1);
                    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleVariableTerm8479); if (failed) return current;
                    if ( backtracking==0 ) {

                      			createLeafNode(grammarAccess.getVariableTermAccess().getOperatorIDTerminalRuleCall_0_0(), "operator"); 
                      		
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVariableTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"operator",
                      	        		lv_operator_0_1, 
                      	        		"ID", 
                      	        		lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5049:8: lv_operator_0_2= 'this'
                    {
                    lv_operator_0_2=(Token)input.LT(1);
                    match(input,78,FollowSets000.FOLLOW_78_in_ruleVariableTerm8500); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getVariableTermAccess().getOperatorThisKeyword_0_1(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVariableTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_0_2, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5067:8: lv_operator_0_3= 'begin'
                    {
                    lv_operator_0_3=(Token)input.LT(1);
                    match(input,79,FollowSets000.FOLLOW_79_in_ruleVariableTerm8529); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getVariableTermAccess().getOperatorBeginKeyword_0_2(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVariableTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_0_3, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 4 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5085:8: lv_operator_0_4= 'end'
                    {
                    lv_operator_0_4=(Token)input.LT(1);
                    match(input,80,FollowSets000.FOLLOW_80_in_ruleVariableTerm8558); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getVariableTermAccess().getOperatorEndKeyword_0_3(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVariableTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_0_4, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;
                case 5 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5103:8: lv_operator_0_5= 'arguments'
                    {
                    lv_operator_0_5=(Token)input.LT(1);
                    match(input,34,FollowSets000.FOLLOW_34_in_ruleVariableTerm8587); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getVariableTermAccess().getOperatorArgumentsKeyword_0_4(), "operator"); 
                          
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getVariableTermRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        
                      	        try {
                      	       		set(current, "operator", lv_operator_0_5, null, lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }
                    break;

            }


            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVariableTerm


    // $ANTLR start entryRuleLiteralExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5132:1: entryRuleLiteralExpression returns [EObject current=null] : iv_ruleLiteralExpression= ruleLiteralExpression EOF ;
    public final EObject entryRuleLiteralExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteralExpression = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5133:2: (iv_ruleLiteralExpression= ruleLiteralExpression EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5134:2: iv_ruleLiteralExpression= ruleLiteralExpression EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getLiteralExpressionRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLiteralExpression_in_entryRuleLiteralExpression8638);
            iv_ruleLiteralExpression=ruleLiteralExpression();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleLiteralExpression; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLiteralExpression8648); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleLiteralExpression


    // $ANTLR start ruleLiteralExpression
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5141:1: ruleLiteralExpression returns [EObject current=null] : ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) ) ;
    public final EObject ruleLiteralExpression() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;
        Token lv_value_1_0=null;
        Token lv_value_2_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5146:6: ( ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5147:1: ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5147:1: ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) )
            int alt63=3;
            switch ( input.LA(1) ) {
            case RULE_STRING:
                {
                alt63=1;
                }
                break;
            case RULE_VERBATIM_STRING:
                {
                alt63=2;
                }
                break;
            case RULE_INT:
                {
                alt63=3;
                }
                break;
            default:
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("5147:1: ( ( (lv_value_0_0= RULE_STRING ) ) | ( (lv_value_1_0= RULE_VERBATIM_STRING ) ) | ( (lv_value_2_0= RULE_INT ) ) )", 63, 0, input);

                throw nvae;
            }

            switch (alt63) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5147:2: ( (lv_value_0_0= RULE_STRING ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5147:2: ( (lv_value_0_0= RULE_STRING ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5148:1: (lv_value_0_0= RULE_STRING )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5148:1: (lv_value_0_0= RULE_STRING )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5149:3: lv_value_0_0= RULE_STRING
                    {
                    lv_value_0_0=(Token)input.LT(1);
                    match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleLiteralExpression8690); if (failed) return current;
                    if ( backtracking==0 ) {

                      			createLeafNode(grammarAccess.getLiteralExpressionAccess().getValueSTRINGTerminalRuleCall_0_0(), "value"); 
                      		
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLiteralExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"value",
                      	        		lv_value_0_0, 
                      	        		"STRING", 
                      	        		lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5172:6: ( (lv_value_1_0= RULE_VERBATIM_STRING ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5172:6: ( (lv_value_1_0= RULE_VERBATIM_STRING ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5173:1: (lv_value_1_0= RULE_VERBATIM_STRING )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5173:1: (lv_value_1_0= RULE_VERBATIM_STRING )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5174:3: lv_value_1_0= RULE_VERBATIM_STRING
                    {
                    lv_value_1_0=(Token)input.LT(1);
                    match(input,RULE_VERBATIM_STRING,FollowSets000.FOLLOW_RULE_VERBATIM_STRING_in_ruleLiteralExpression8718); if (failed) return current;
                    if ( backtracking==0 ) {

                      			createLeafNode(grammarAccess.getLiteralExpressionAccess().getValueVERBATIM_STRINGTerminalRuleCall_1_0(), "value"); 
                      		
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLiteralExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"value",
                      	        		lv_value_1_0, 
                      	        		"VERBATIM_STRING", 
                      	        		lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5197:6: ( (lv_value_2_0= RULE_INT ) )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5197:6: ( (lv_value_2_0= RULE_INT ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5198:1: (lv_value_2_0= RULE_INT )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5198:1: (lv_value_2_0= RULE_INT )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5199:3: lv_value_2_0= RULE_INT
                    {
                    lv_value_2_0=(Token)input.LT(1);
                    match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleLiteralExpression8746); if (failed) return current;
                    if ( backtracking==0 ) {

                      			createLeafNode(grammarAccess.getLiteralExpressionAccess().getValueINTTerminalRuleCall_2_0(), "value"); 
                      		
                    }
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLiteralExpressionRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode, current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"value",
                      	        		lv_value_2_0, 
                      	        		"INT", 
                      	        		lastConsumedNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleLiteralExpression


    // $ANTLR start entryRulePatternMatchInfoProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5229:1: entryRulePatternMatchInfoProxy returns [EObject current=null] : iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF ;
    public final EObject entryRulePatternMatchInfoProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePatternMatchInfoProxy = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5230:2: (iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5231:2: iv_rulePatternMatchInfoProxy= rulePatternMatchInfoProxy EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getPatternMatchInfoProxyRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePatternMatchInfoProxy_in_entryRulePatternMatchInfoProxy8787);
            iv_rulePatternMatchInfoProxy=rulePatternMatchInfoProxy();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_rulePatternMatchInfoProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePatternMatchInfoProxy8797); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePatternMatchInfoProxy


    // $ANTLR start rulePatternMatchInfoProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5238:1: rulePatternMatchInfoProxy returns [EObject current=null] : ( 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject rulePatternMatchInfoProxy() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5243:6: ( ( 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5244:1: ( 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5244:1: ( 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5244:3: 'matchinfo' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            match(input,81,FollowSets000.FOLLOW_81_in_rulePatternMatchInfoProxy8832); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getPatternMatchInfoProxyAccess().getMatchinfoKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5248:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5249:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5249:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5250:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_rulePatternMatchInfoProxy8849); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getPatternMatchInfoProxyAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getPatternMatchInfoProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,82,FollowSets000.FOLLOW_82_in_rulePatternMatchInfoProxy8864); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getPatternMatchInfoProxyAccess().getClassKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5276:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5277:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5277:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5278:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy8885);
            lv_baseClass_3_0=ruleDotQualifiedID();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getPatternMatchInfoProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"baseClass",
              	        		lv_baseClass_3_0, 
              	        		"DotQualifiedID", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5300:2: ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==83) ) {
                alt64=1;
            }
            switch (alt64) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5300:4: 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    match(input,83,FollowSets000.FOLLOW_83_in_rulePatternMatchInfoProxy8896); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getPatternMatchInfoProxyAccess().getFactoryKeyword_4_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5304:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5305:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5305:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5306:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy8917);
                    lv_factory_5_0=ruleDotQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternMatchInfoProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"factory",
                      	        		lv_factory_5_0, 
                      	        		"DotQualifiedID", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5328:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==34) ) {
                alt65=1;
            }
            switch (alt65) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5329:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5329:1: (lv_children_6_0= ruleProxyArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5330:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getPatternMatchInfoProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_rulePatternMatchInfoProxy8940);
                    lv_children_6_0=ruleProxyArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getPatternMatchInfoProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_6_0, 
                      	        		"ProxyArgument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePatternMatchInfoProxy


    // $ANTLR start entryRuleLocatorProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5360:1: entryRuleLocatorProxy returns [EObject current=null] : iv_ruleLocatorProxy= ruleLocatorProxy EOF ;
    public final EObject entryRuleLocatorProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLocatorProxy = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5361:2: (iv_ruleLocatorProxy= ruleLocatorProxy EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5362:2: iv_ruleLocatorProxy= ruleLocatorProxy EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getLocatorProxyRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleLocatorProxy_in_entryRuleLocatorProxy8977);
            iv_ruleLocatorProxy=ruleLocatorProxy();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleLocatorProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocatorProxy8987); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleLocatorProxy


    // $ANTLR start ruleLocatorProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5369:1: ruleLocatorProxy returns [EObject current=null] : ( 'locator' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject ruleLocatorProxy() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5374:6: ( ( 'locator' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5375:1: ( 'locator' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5375:1: ( 'locator' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5375:3: 'locator' ( (lv_name_1_0= RULE_ID ) ) 'class' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            match(input,84,FollowSets000.FOLLOW_84_in_ruleLocatorProxy9022); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getLocatorProxyAccess().getLocatorKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5379:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5380:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5380:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5381:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleLocatorProxy9039); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getLocatorProxyAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getLocatorProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,82,FollowSets000.FOLLOW_82_in_ruleLocatorProxy9054); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getLocatorProxyAccess().getClassKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5407:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5408:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5408:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5409:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getLocatorProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy9075);
            lv_baseClass_3_0=ruleDotQualifiedID();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getLocatorProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"baseClass",
              	        		lv_baseClass_3_0, 
              	        		"DotQualifiedID", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5431:2: ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt66=2;
            int LA66_0 = input.LA(1);

            if ( (LA66_0==83) ) {
                alt66=1;
            }
            switch (alt66) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5431:4: 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    match(input,83,FollowSets000.FOLLOW_83_in_ruleLocatorProxy9086); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getLocatorProxyAccess().getFactoryKeyword_4_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5435:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5436:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5436:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5437:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getLocatorProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy9107);
                    lv_factory_5_0=ruleDotQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLocatorProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"factory",
                      	        		lv_factory_5_0, 
                      	        		"DotQualifiedID", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5459:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt67=2;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==34) ) {
                alt67=1;
            }
            switch (alt67) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5460:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5460:1: (lv_children_6_0= ruleProxyArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5461:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getLocatorProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_ruleLocatorProxy9130);
                    lv_children_6_0=ruleProxyArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getLocatorProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_6_0, 
                      	        		"ProxyArgument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleLocatorProxy


    // $ANTLR start entryRuleTypeProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5491:1: entryRuleTypeProxy returns [EObject current=null] : iv_ruleTypeProxy= ruleTypeProxy EOF ;
    public final EObject entryRuleTypeProxy() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeProxy = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5492:2: (iv_ruleTypeProxy= ruleTypeProxy EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5493:2: iv_ruleTypeProxy= ruleTypeProxy EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getTypeProxyRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleTypeProxy_in_entryRuleTypeProxy9167);
            iv_ruleTypeProxy=ruleTypeProxy();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleTypeProxy; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypeProxy9177); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleTypeProxy


    // $ANTLR start ruleTypeProxy
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5500:1: ruleTypeProxy returns [EObject current=null] : ( 'type' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) ;
    public final EObject ruleTypeProxy() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        AntlrDatatypeRuleToken lv_baseClass_3_0 = null;

        AntlrDatatypeRuleToken lv_factory_5_0 = null;

        EObject lv_children_6_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5505:6: ( ( 'type' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5506:1: ( 'type' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5506:1: ( 'type' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )? )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5506:3: 'type' ( (lv_name_1_0= RULE_ID ) ) '=' ( (lv_baseClass_3_0= ruleDotQualifiedID ) ) ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )? ( (lv_children_6_0= ruleProxyArgument ) )?
            {
            match(input,85,FollowSets000.FOLLOW_85_in_ruleTypeProxy9212); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getTypeProxyAccess().getTypeKeyword_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5510:1: ( (lv_name_1_0= RULE_ID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5511:1: (lv_name_1_0= RULE_ID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5511:1: (lv_name_1_0= RULE_ID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5512:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleTypeProxy9229); if (failed) return current;
            if ( backtracking==0 ) {

              			createLeafNode(grammarAccess.getTypeProxyAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
              		
            }
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getTypeProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode, current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"name",
              	        		lv_name_1_0, 
              	        		"ID", 
              	        		lastConsumedNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	    
            }

            }


            }

            match(input,21,FollowSets000.FOLLOW_21_in_ruleTypeProxy9244); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getTypeProxyAccess().getEqualsSignKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5538:1: ( (lv_baseClass_3_0= ruleDotQualifiedID ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5539:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5539:1: (lv_baseClass_3_0= ruleDotQualifiedID )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5540:3: lv_baseClass_3_0= ruleDotQualifiedID
            {
            if ( backtracking==0 ) {
               
              	        currentNode=createCompositeNode(grammarAccess.getTypeProxyAccess().getBaseClassDotQualifiedIDParserRuleCall_3_0(), currentNode); 
              	    
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy9265);
            lv_baseClass_3_0=ruleDotQualifiedID();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {

              	        if (current==null) {
              	            current = factory.create(grammarAccess.getTypeProxyRule().getType().getClassifier());
              	            associateNodeWithAstElement(currentNode.getParent(), current);
              	        }
              	        try {
              	       		set(
              	       			current, 
              	       			"baseClass",
              	        		lv_baseClass_3_0, 
              	        		"DotQualifiedID", 
              	        		currentNode);
              	        } catch (ValueConverterException vce) {
              				handleValueConverterException(vce);
              	        }
              	        currentNode = currentNode.getParent();
              	    
            }

            }


            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5562:2: ( 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) ) )?
            int alt68=2;
            int LA68_0 = input.LA(1);

            if ( (LA68_0==83) ) {
                alt68=1;
            }
            switch (alt68) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5562:4: 'factory' ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    {
                    match(input,83,FollowSets000.FOLLOW_83_in_ruleTypeProxy9276); if (failed) return current;
                    if ( backtracking==0 ) {

                              createLeafNode(grammarAccess.getTypeProxyAccess().getFactoryKeyword_4_0(), null); 
                          
                    }
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5566:1: ( (lv_factory_5_0= ruleDotQualifiedID ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5567:1: (lv_factory_5_0= ruleDotQualifiedID )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5567:1: (lv_factory_5_0= ruleDotQualifiedID )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5568:3: lv_factory_5_0= ruleDotQualifiedID
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getTypeProxyAccess().getFactoryDotQualifiedIDParserRuleCall_4_1_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy9297);
                    lv_factory_5_0=ruleDotQualifiedID();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getTypeProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		set(
                      	       			current, 
                      	       			"factory",
                      	        		lv_factory_5_0, 
                      	        		"DotQualifiedID", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5590:4: ( (lv_children_6_0= ruleProxyArgument ) )?
            int alt69=2;
            int LA69_0 = input.LA(1);

            if ( (LA69_0==34) ) {
                alt69=1;
            }
            switch (alt69) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5591:1: (lv_children_6_0= ruleProxyArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5591:1: (lv_children_6_0= ruleProxyArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5592:3: lv_children_6_0= ruleProxyArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getTypeProxyAccess().getChildrenProxyArgumentParserRuleCall_5_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_ruleTypeProxy9320);
                    lv_children_6_0=ruleProxyArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getTypeProxyRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_6_0, 
                      	        		"ProxyArgument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTypeProxy


    // $ANTLR start entryRuleProxyArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5622:1: entryRuleProxyArgument returns [EObject current=null] : iv_ruleProxyArgument= ruleProxyArgument EOF ;
    public final EObject entryRuleProxyArgument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleProxyArgument = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5623:2: (iv_ruleProxyArgument= ruleProxyArgument EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5624:2: iv_ruleProxyArgument= ruleProxyArgument EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getProxyArgumentRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleProxyArgument_in_entryRuleProxyArgument9357);
            iv_ruleProxyArgument=ruleProxyArgument();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleProxyArgument; 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleProxyArgument9367); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleProxyArgument


    // $ANTLR start ruleProxyArgument
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5631:1: ruleProxyArgument returns [EObject current=null] : ( () 'arguments' '{' ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? '}' ) ;
    public final EObject ruleProxyArgument() throws RecognitionException {
        EObject current = null;

        EObject lv_children_3_0 = null;

        EObject lv_children_5_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5636:6: ( ( () 'arguments' '{' ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? '}' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5637:1: ( () 'arguments' '{' ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? '}' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5637:1: ( () 'arguments' '{' ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? '}' )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5637:2: () 'arguments' '{' ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )? '}'
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5637:2: ()
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5638:2: 
            {
            if ( backtracking==0 ) {
               
              	  /* */ 
              	
            }
            if ( backtracking==0 ) {
               
                      temp=factory.create(grammarAccess.getProxyArgumentAccess().getElementAction_0().getType().getClassifier());
                      current = temp; 
                      temp = null;
                      CompositeNode newNode = createCompositeNode(grammarAccess.getProxyArgumentAccess().getElementAction_0(), currentNode.getParent());
                  newNode.getChildren().add(currentNode);
                  moveLookaheadInfo(currentNode, newNode);
                  currentNode = newNode; 
                      associateNodeWithAstElement(currentNode, current); 
                  
            }

            }

            match(input,34,FollowSets000.FOLLOW_34_in_ruleProxyArgument9414); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getProxyArgumentAccess().getArgumentsKeyword_1(), null); 
                  
            }
            match(input,25,FollowSets000.FOLLOW_25_in_ruleProxyArgument9424); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getProxyArgumentAccess().getLeftCurlyBracketKeyword_2(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5659:1: ( ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )* )?
            int alt71=2;
            int LA71_0 = input.LA(1);

            if ( ((LA71_0>=RULE_ID && LA71_0<=RULE_INT)||LA71_0==17||LA71_0==25||(LA71_0>=33 && LA71_0<=34)||(LA71_0>=50 && LA71_0<=51)||LA71_0==67||(LA71_0>=71 && LA71_0<=80)||(LA71_0>=87 && LA71_0<=88)) ) {
                alt71=1;
            }
            switch (alt71) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5659:2: ( (lv_children_3_0= ruleArgument ) ) ( ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5659:2: ( (lv_children_3_0= ruleArgument ) )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5660:1: (lv_children_3_0= ruleArgument )
                    {
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5660:1: (lv_children_3_0= ruleArgument )
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5661:3: lv_children_3_0= ruleArgument
                    {
                    if ( backtracking==0 ) {
                       
                      	        currentNode=createCompositeNode(grammarAccess.getProxyArgumentAccess().getChildrenArgumentParserRuleCall_3_0_0(), currentNode); 
                      	    
                    }
                    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleProxyArgument9446);
                    lv_children_3_0=ruleArgument();
                    _fsp--;
                    if (failed) return current;
                    if ( backtracking==0 ) {

                      	        if (current==null) {
                      	            current = factory.create(grammarAccess.getProxyArgumentRule().getType().getClassifier());
                      	            associateNodeWithAstElement(currentNode.getParent(), current);
                      	        }
                      	        try {
                      	       		add(
                      	       			current, 
                      	       			"children",
                      	        		lv_children_3_0, 
                      	        		"Argument", 
                      	        		currentNode);
                      	        } catch (ValueConverterException vce) {
                      				handleValueConverterException(vce);
                      	        }
                      	        currentNode = currentNode.getParent();
                      	    
                    }

                    }


                    }

                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5683:2: ( ',' ( (lv_children_5_0= ruleArgument ) ) )*
                    loop70:
                    do {
                        int alt70=2;
                        int LA70_0 = input.LA(1);

                        if ( (LA70_0==18) ) {
                            alt70=1;
                        }


                        switch (alt70) {
                    	case 1 :
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5683:4: ',' ( (lv_children_5_0= ruleArgument ) )
                    	    {
                    	    match(input,18,FollowSets000.FOLLOW_18_in_ruleProxyArgument9457); if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	              createLeafNode(grammarAccess.getProxyArgumentAccess().getCommaKeyword_3_1_0(), null); 
                    	          
                    	    }
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5687:1: ( (lv_children_5_0= ruleArgument ) )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5688:1: (lv_children_5_0= ruleArgument )
                    	    {
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5688:1: (lv_children_5_0= ruleArgument )
                    	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5689:3: lv_children_5_0= ruleArgument
                    	    {
                    	    if ( backtracking==0 ) {
                    	       
                    	      	        currentNode=createCompositeNode(grammarAccess.getProxyArgumentAccess().getChildrenArgumentParserRuleCall_3_1_1_0(), currentNode); 
                    	      	    
                    	    }
                    	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_ruleProxyArgument9478);
                    	    lv_children_5_0=ruleArgument();
                    	    _fsp--;
                    	    if (failed) return current;
                    	    if ( backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = factory.create(grammarAccess.getProxyArgumentRule().getType().getClassifier());
                    	      	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	      	        }
                    	      	        try {
                    	      	       		add(
                    	      	       			current, 
                    	      	       			"children",
                    	      	        		lv_children_5_0, 
                    	      	        		"Argument", 
                    	      	        		currentNode);
                    	      	        } catch (ValueConverterException vce) {
                    	      				handleValueConverterException(vce);
                    	      	        }
                    	      	        currentNode = currentNode.getParent();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop70;
                        }
                    } while (true);


                    }
                    break;

            }

            match(input,26,FollowSets000.FOLLOW_26_in_ruleProxyArgument9492); if (failed) return current;
            if ( backtracking==0 ) {

                      createLeafNode(grammarAccess.getProxyArgumentAccess().getRightCurlyBracketKeyword_4(), null); 
                  
            }

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
                  	lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleProxyArgument


    // $ANTLR start entryRuleQualifiedID
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5723:1: entryRuleQualifiedID returns [String current=null] : iv_ruleQualifiedID= ruleQualifiedID EOF ;
    public final String entryRuleQualifiedID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedID = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5724:2: (iv_ruleQualifiedID= ruleQualifiedID EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5725:2: iv_ruleQualifiedID= ruleQualifiedID EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getQualifiedIDRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_entryRuleQualifiedID9529);
            iv_ruleQualifiedID=ruleQualifiedID();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleQualifiedID.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleQualifiedID9540); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleQualifiedID


    // $ANTLR start ruleQualifiedID
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5732:1: ruleQualifiedID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5737:6: ( (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5738:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5738:1: (this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5738:6: this_ID_0= RULE_ID (kw= '::' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedID9580); if (failed) return current;
            if ( backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( backtracking==0 ) {
               
                  createLeafNode(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5745:1: (kw= '::' this_ID_2= RULE_ID )*
            loop72:
            do {
                int alt72=2;
                int LA72_0 = input.LA(1);

                if ( (LA72_0==86) ) {
                    alt72=1;
                }


                switch (alt72) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5746:2: kw= '::' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,86,FollowSets000.FOLLOW_86_in_ruleQualifiedID9599); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              current.merge(kw);
            	              createLeafNode(grammarAccess.getQualifiedIDAccess().getColonColonKeyword_1_0(), null); 
            	          
            	    }
            	    this_ID_2=(Token)input.LT(1);
            	    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleQualifiedID9614); if (failed) return current;
            	    if ( backtracking==0 ) {

            	      		current.merge(this_ID_2);
            	          
            	    }
            	    if ( backtracking==0 ) {
            	       
            	          createLeafNode(grammarAccess.getQualifiedIDAccess().getIDTerminalRuleCall_1_1(), null); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop72;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
              	    lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleQualifiedID


    // $ANTLR start entryRuleDotQualifiedID
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5766:1: entryRuleDotQualifiedID returns [String current=null] : iv_ruleDotQualifiedID= ruleDotQualifiedID EOF ;
    public final String entryRuleDotQualifiedID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDotQualifiedID = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5767:2: (iv_ruleDotQualifiedID= ruleDotQualifiedID EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5768:2: iv_ruleDotQualifiedID= ruleDotQualifiedID EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getDotQualifiedIDRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleDotQualifiedID_in_entryRuleDotQualifiedID9662);
            iv_ruleDotQualifiedID=ruleDotQualifiedID();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleDotQualifiedID.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDotQualifiedID9673); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDotQualifiedID


    // $ANTLR start ruleDotQualifiedID
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5775:1: ruleDotQualifiedID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleDotQualifiedID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5780:6: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5781:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5781:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5781:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDotQualifiedID9713); if (failed) return current;
            if ( backtracking==0 ) {

              		current.merge(this_ID_0);
                  
            }
            if ( backtracking==0 ) {
               
                  createLeafNode(grammarAccess.getDotQualifiedIDAccess().getIDTerminalRuleCall_0(), null); 
                  
            }
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5788:1: (kw= '.' this_ID_2= RULE_ID )*
            loop73:
            do {
                int alt73=2;
                int LA73_0 = input.LA(1);

                if ( (LA73_0==68) ) {
                    alt73=1;
                }


                switch (alt73) {
            	case 1 :
            	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5789:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,68,FollowSets000.FOLLOW_68_in_ruleDotQualifiedID9732); if (failed) return current;
            	    if ( backtracking==0 ) {

            	              current.merge(kw);
            	              createLeafNode(grammarAccess.getDotQualifiedIDAccess().getFullStopKeyword_1_0(), null); 
            	          
            	    }
            	    this_ID_2=(Token)input.LT(1);
            	    match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleDotQualifiedID9747); if (failed) return current;
            	    if ( backtracking==0 ) {

            	      		current.merge(this_ID_2);
            	          
            	    }
            	    if ( backtracking==0 ) {
            	       
            	          createLeafNode(grammarAccess.getDotQualifiedIDAccess().getIDTerminalRuleCall_1_1(), null); 
            	          
            	    }

            	    }
            	    break;

            	default :
            	    break loop73;
                }
            } while (true);


            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
              	    lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDotQualifiedID


    // $ANTLR start entryRuleBOOLEAN_CONSTANTS
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5809:1: entryRuleBOOLEAN_CONSTANTS returns [String current=null] : iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF ;
    public final String entryRuleBOOLEAN_CONSTANTS() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleBOOLEAN_CONSTANTS = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5810:2: (iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5811:2: iv_ruleBOOLEAN_CONSTANTS= ruleBOOLEAN_CONSTANTS EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getBOOLEAN_CONSTANTSRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_ruleBOOLEAN_CONSTANTS_in_entryRuleBOOLEAN_CONSTANTS9795);
            iv_ruleBOOLEAN_CONSTANTS=ruleBOOLEAN_CONSTANTS();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_ruleBOOLEAN_CONSTANTS.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBOOLEAN_CONSTANTS9806); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBOOLEAN_CONSTANTS


    // $ANTLR start ruleBOOLEAN_CONSTANTS
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5818:1: ruleBOOLEAN_CONSTANTS returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'true' | kw= 'false' ) ;
    public final AntlrDatatypeRuleToken ruleBOOLEAN_CONSTANTS() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5823:6: ( (kw= 'true' | kw= 'false' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5824:1: (kw= 'true' | kw= 'false' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5824:1: (kw= 'true' | kw= 'false' )
            int alt74=2;
            int LA74_0 = input.LA(1);

            if ( (LA74_0==87) ) {
                alt74=1;
            }
            else if ( (LA74_0==88) ) {
                alt74=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("5824:1: (kw= 'true' | kw= 'false' )", 74, 0, input);

                throw nvae;
            }
            switch (alt74) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5825:2: kw= 'true'
                    {
                    kw=(Token)input.LT(1);
                    match(input,87,FollowSets000.FOLLOW_87_in_ruleBOOLEAN_CONSTANTS9844); if (failed) return current;
                    if ( backtracking==0 ) {

                              current.merge(kw);
                              createLeafNode(grammarAccess.getBOOLEAN_CONSTANTSAccess().getTrueKeyword_0(), null); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5832:2: kw= 'false'
                    {
                    kw=(Token)input.LT(1);
                    match(input,88,FollowSets000.FOLLOW_88_in_ruleBOOLEAN_CONSTANTS9863); if (failed) return current;
                    if ( backtracking==0 ) {

                              current.merge(kw);
                              createLeafNode(grammarAccess.getBOOLEAN_CONSTANTSAccess().getFalseKeyword_1(), null); 
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
              	    lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBOOLEAN_CONSTANTS


    // $ANTLR start entryRulePOSITION_CONSTANTS
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5845:1: entryRulePOSITION_CONSTANTS returns [String current=null] : iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF ;
    public final String entryRulePOSITION_CONSTANTS() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePOSITION_CONSTANTS = null;


        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5846:2: (iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5847:2: iv_rulePOSITION_CONSTANTS= rulePOSITION_CONSTANTS EOF
            {
            if ( backtracking==0 ) {
               currentNode = createCompositeNode(grammarAccess.getPOSITION_CONSTANTSRule(), currentNode); 
            }
            pushFollow(FollowSets000.FOLLOW_rulePOSITION_CONSTANTS_in_entryRulePOSITION_CONSTANTS9904);
            iv_rulePOSITION_CONSTANTS=rulePOSITION_CONSTANTS();
            _fsp--;
            if (failed) return current;
            if ( backtracking==0 ) {
               current =iv_rulePOSITION_CONSTANTS.getText(); 
            }
            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRulePOSITION_CONSTANTS9915); if (failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePOSITION_CONSTANTS


    // $ANTLR start rulePOSITION_CONSTANTS
    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5854:1: rulePOSITION_CONSTANTS returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'begin' | kw= 'end' ) ;
    public final AntlrDatatypeRuleToken rulePOSITION_CONSTANTS() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5859:6: ( (kw= 'begin' | kw= 'end' ) )
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5860:1: (kw= 'begin' | kw= 'end' )
            {
            // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5860:1: (kw= 'begin' | kw= 'end' )
            int alt75=2;
            int LA75_0 = input.LA(1);

            if ( (LA75_0==79) ) {
                alt75=1;
            }
            else if ( (LA75_0==80) ) {
                alt75=2;
            }
            else {
                if (backtracking>0) {failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("5860:1: (kw= 'begin' | kw= 'end' )", 75, 0, input);

                throw nvae;
            }
            switch (alt75) {
                case 1 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5861:2: kw= 'begin'
                    {
                    kw=(Token)input.LT(1);
                    match(input,79,FollowSets000.FOLLOW_79_in_rulePOSITION_CONSTANTS9953); if (failed) return current;
                    if ( backtracking==0 ) {

                              current.merge(kw);
                              createLeafNode(grammarAccess.getPOSITION_CONSTANTSAccess().getBeginKeyword_0(), null); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:5868:2: kw= 'end'
                    {
                    kw=(Token)input.LT(1);
                    match(input,80,FollowSets000.FOLLOW_80_in_rulePOSITION_CONSTANTS9972); if (failed) return current;
                    if ( backtracking==0 ) {

                              current.merge(kw);
                              createLeafNode(grammarAccess.getPOSITION_CONSTANTSAccess().getEndKeyword_1(), null); 
                          
                    }

                    }
                    break;

            }


            }

            if ( backtracking==0 ) {
               resetLookahead(); 
              	    lastConsumedNode = currentNode;
                  
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePOSITION_CONSTANTS

    // $ANTLR start synpred10
    public final void synpred10_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:526:1: ( ( ruleCompositeStatement ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:526:1: ( ruleCompositeStatement )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:526:1: ( ruleCompositeStatement )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:527:3: ruleCompositeStatement
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getPatternDeclarationAccess().getChildrenCompositeStatementParserRuleCall_6_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleCompositeStatement_in_synpred10962);
        ruleCompositeStatement();
        _fsp--;
        if (failed) return ;

        }


        }
    }
    // $ANTLR end synpred10

    // $ANTLR start synpred18
    public final void synpred18_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:885:1: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:885:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:885:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:886:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getReturnStatementAccess().getChildrenExpressionParserRuleCall_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred181701);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }
    }
    // $ANTLR end synpred18

    // $ANTLR start synpred22
    public final void synpred22_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1110:4: ( ',' ( ( ruleVarEntry ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1110:4: ',' ( ( ruleVarEntry ) )
        {
        match(input,18,FollowSets000.FOLLOW_18_in_synpred222064); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1114:1: ( ( ruleVarEntry ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1115:1: ( ruleVarEntry )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1115:1: ( ruleVarEntry )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1116:3: ruleVarEntry
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getDeclarationStatementAccess().getChildrenVarEntryParserRuleCall_2_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleVarEntry_in_synpred222085);
        ruleVarEntry();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred22

    // $ANTLR start synpred25
    public final void synpred25_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1305:4: ( ({...}? => ( ( 'for' ( ( rulePOSITION_CONSTANTS ) ) ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1305:4: ({...}? => ( ( 'for' ( ( rulePOSITION_CONSTANTS ) ) ) ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1305:4: ({...}? => ( ( 'for' ( ( rulePOSITION_CONSTANTS ) ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1306:5: {...}? => ( ( 'for' ( ( rulePOSITION_CONSTANTS ) ) ) )
        {
        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0) ) {
            if (backtracking>0) {failed=true; return ;}
            throw new FailedPredicateException(input, "synpred25", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0)");
        }
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1306:112: ( ( 'for' ( ( rulePOSITION_CONSTANTS ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1307:6: ( 'for' ( ( rulePOSITION_CONSTANTS ) ) )
        {
        getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 0);
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1310:6: ( 'for' ( ( rulePOSITION_CONSTANTS ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1310:8: 'for' ( ( rulePOSITION_CONSTANTS ) )
        {
        match(input,30,FollowSets000.FOLLOW_30_in_synpred252411); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1314:1: ( ( rulePOSITION_CONSTANTS ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1315:1: ( rulePOSITION_CONSTANTS )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1315:1: ( rulePOSITION_CONSTANTS )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1316:3: rulePOSITION_CONSTANTS
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getPositionPOSITION_CONSTANTSParserRuleCall_3_0_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_rulePOSITION_CONSTANTS_in_synpred252432);
        rulePOSITION_CONSTANTS();
        _fsp--;
        if (failed) return ;

        }


        }


        }


        }


        }


        }
    }
    // $ANTLR end synpred25

    // $ANTLR start synpred26
    public final void synpred26_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1345:4: ( ({...}? => ( ( 'option' '=' ( ( ruleExpression ) ) ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1345:4: ({...}? => ( ( 'option' '=' ( ( ruleExpression ) ) ) ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1345:4: ({...}? => ( ( 'option' '=' ( ( ruleExpression ) ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1346:5: {...}? => ( ( 'option' '=' ( ( ruleExpression ) ) ) )
        {
        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1) ) {
            if (backtracking>0) {failed=true; return ;}
            throw new FailedPredicateException(input, "synpred26", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1)");
        }
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1346:112: ( ( 'option' '=' ( ( ruleExpression ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1347:6: ( 'option' '=' ( ( ruleExpression ) ) )
        {
        getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 1);
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1350:6: ( 'option' '=' ( ( ruleExpression ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1350:8: 'option' '=' ( ( ruleExpression ) )
        {
        match(input,31,FollowSets000.FOLLOW_31_in_synpred262494); if (failed) return ;
        match(input,21,FollowSets000.FOLLOW_21_in_synpred262504); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1358:1: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1359:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1359:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1360:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getFlagExpressionParserRuleCall_3_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred262525);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }


        }


        }


        }


        }
    }
    // $ANTLR end synpred26

    // $ANTLR start synpred29
    public final void synpred29_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1389:4: ( ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1389:4: ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' ) ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1389:4: ({...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1390:5: {...}? => ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' ) )
        {
        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2) ) {
            if (backtracking>0) {failed=true; return ;}
            throw new FailedPredicateException(input, "synpred29", "getUnorderedGroupHelper().canSelect(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2)");
        }
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1390:112: ( ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1391:6: ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' )
        {
        getUnorderedGroupHelper().select(grammarAccess.getLocateStatementAccess().getUnorderedGroup_3(), 2);
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1394:6: ( 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1394:8: 'using' ( ( ruleQualifiedID ) ) '(' ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )? ')'
        {
        match(input,32,FollowSets000.FOLLOW_32_in_synpred292587); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1398:1: ( ( ruleQualifiedID ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1399:1: ( ruleQualifiedID )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1399:1: ( ruleQualifiedID )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1400:3: ruleQualifiedID
        {
        if ( backtracking==0 ) {
           
          		  /* */ 
          		
        }
        pushFollow(FollowSets000.FOLLOW_ruleQualifiedID_in_synpred292614);
        ruleQualifiedID();
        _fsp--;
        if (failed) return ;

        }


        }

        match(input,17,FollowSets000.FOLLOW_17_in_synpred292624); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:1: ( ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )?
        int alt80=2;
        int LA80_0 = input.LA(1);

        if ( ((LA80_0>=RULE_ID && LA80_0<=RULE_INT)||LA80_0==17||LA80_0==25||(LA80_0>=33 && LA80_0<=34)||(LA80_0>=50 && LA80_0<=51)||LA80_0==67||(LA80_0>=71 && LA80_0<=80)||(LA80_0>=87 && LA80_0<=88)) ) {
            alt80=1;
        }
        switch (alt80) {
            case 1 :
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:2: ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )*
                {
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1421:2: ( ( ruleArgument ) )
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1422:1: ( ruleArgument )
                {
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1422:1: ( ruleArgument )
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1423:3: ruleArgument
                {
                if ( backtracking==0 ) {
                   
                  	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_0_0(), currentNode); 
                  	    
                }
                pushFollow(FollowSets000.FOLLOW_ruleArgument_in_synpred292646);
                ruleArgument();
                _fsp--;
                if (failed) return ;

                }


                }

                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1445:2: ( ',' ( ( ruleArgument ) ) )*
                loop79:
                do {
                    int alt79=2;
                    int LA79_0 = input.LA(1);

                    if ( (LA79_0==18) ) {
                        alt79=1;
                    }


                    switch (alt79) {
                	case 1 :
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1445:4: ',' ( ( ruleArgument ) )
                	    {
                	    match(input,18,FollowSets000.FOLLOW_18_in_synpred292657); if (failed) return ;
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1449:1: ( ( ruleArgument ) )
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1450:1: ( ruleArgument )
                	    {
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1450:1: ( ruleArgument )
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1451:3: ruleArgument
                	    {
                	    if ( backtracking==0 ) {
                	       
                	      	        currentNode=createCompositeNode(grammarAccess.getLocateStatementAccess().getChildrenArgumentParserRuleCall_3_2_3_1_1_0(), currentNode); 
                	      	    
                	    }
                	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_synpred292678);
                	    ruleArgument();
                	    _fsp--;
                	    if (failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop79;
                    }
                } while (true);


                }
                break;

        }

        match(input,19,FollowSets000.FOLLOW_19_in_synpred292692); if (failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred29

    // $ANTLR start synpred30
    public final void synpred30_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:4: ( ',' ( ( ruleArgument ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:4: ',' ( ( ruleArgument ) )
        {
        match(input,18,FollowSets000.FOLLOW_18_in_synpred302887); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1578:1: ( ( ruleArgument ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: ( ruleArgument )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: ( ruleArgument )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1580:3: ruleArgument
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_2_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleArgument_in_synpred302908);
        ruleArgument();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred30

    // $ANTLR start synpred31
    public final void synpred31_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1546:4: ( 'arguments' ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )* )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1546:4: 'arguments' ( ( ruleArgument ) ) ( ',' ( ( ruleArgument ) ) )*
        {
        match(input,34,FollowSets000.FOLLOW_34_in_synpred312855); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1550:1: ( ( ruleArgument ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1551:1: ( ruleArgument )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1551:1: ( ruleArgument )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1552:3: ruleArgument
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleArgument_in_synpred312876);
        ruleArgument();
        _fsp--;
        if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:2: ( ',' ( ( ruleArgument ) ) )*
        loop81:
        do {
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==18) ) {
                alt81=1;
            }


            switch (alt81) {
        	case 1 :
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1574:4: ',' ( ( ruleArgument ) )
        	    {
        	    match(input,18,FollowSets000.FOLLOW_18_in_synpred312887); if (failed) return ;
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1578:1: ( ( ruleArgument ) )
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: ( ruleArgument )
        	    {
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1579:1: ( ruleArgument )
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1580:3: ruleArgument
        	    {
        	    if ( backtracking==0 ) {
        	       
        	      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenArgumentParserRuleCall_2_2_1_0(), currentNode); 
        	      	    
        	    }
        	    pushFollow(FollowSets000.FOLLOW_ruleArgument_in_synpred312908);
        	    ruleArgument();
        	    _fsp--;
        	    if (failed) return ;

        	    }


        	    }


        	    }
        	    break;

        	default :
        	    break loop81;
            }
        } while (true);


        }
    }
    // $ANTLR end synpred31

    // $ANTLR start synpred32
    public final void synpred32_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:4: ( ',' ( ( ruleMatchOption ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:4: ',' ( ( ruleMatchOption ) )
        {
        match(input,18,FollowSets000.FOLLOW_18_in_synpred322955); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1634:1: ( ( ruleMatchOption ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: ( ruleMatchOption )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: ( ruleMatchOption )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1636:3: ruleMatchOption
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_2_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_synpred322976);
        ruleMatchOption();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred32

    // $ANTLR start synpred33
    public final void synpred33_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1602:8: ( 'options' ( ( ruleMatchOption ) ) ( ',' ( ( ruleMatchOption ) ) )* )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1602:8: 'options' ( ( ruleMatchOption ) ) ( ',' ( ( ruleMatchOption ) ) )*
        {
        match(input,35,FollowSets000.FOLLOW_35_in_synpred332923); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1606:1: ( ( ruleMatchOption ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1607:1: ( ruleMatchOption )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1607:1: ( ruleMatchOption )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1608:3: ruleMatchOption
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_synpred332944);
        ruleMatchOption();
        _fsp--;
        if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:2: ( ',' ( ( ruleMatchOption ) ) )*
        loop82:
        do {
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==18) ) {
                alt82=1;
            }


            switch (alt82) {
        	case 1 :
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1630:4: ',' ( ( ruleMatchOption ) )
        	    {
        	    match(input,18,FollowSets000.FOLLOW_18_in_synpred332955); if (failed) return ;
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1634:1: ( ( ruleMatchOption ) )
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: ( ruleMatchOption )
        	    {
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1635:1: ( ruleMatchOption )
        	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1636:3: ruleMatchOption
        	    {
        	    if ( backtracking==0 ) {
        	       
        	      	        currentNode=createCompositeNode(grammarAccess.getMatchStatementAccess().getChildrenMatchOptionParserRuleCall_3_2_1_0(), currentNode); 
        	      	    
        	    }
        	    pushFollow(FollowSets000.FOLLOW_ruleMatchOption_in_synpred332976);
        	    ruleMatchOption();
        	    _fsp--;
        	    if (failed) return ;

        	    }


        	    }


        	    }
        	    break;

        	default :
        	    break loop82;
            }
        } while (true);


        }
    }
    // $ANTLR end synpred33

    // $ANTLR start synpred40
    public final void synpred40_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1924:4: ( 'else' ( ( ruleStatement ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1924:4: 'else' ( ( ruleStatement ) )
        {
        match(input,44,FollowSets000.FOLLOW_44_in_synpred403446); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1928:1: ( ( ruleStatement ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1929:1: ( ruleStatement )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1929:1: ( ruleStatement )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:1930:3: ruleStatement
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getIfStatementAccess().getFalseStatementStatementParserRuleCall_5_1_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleStatement_in_synpred403467);
        ruleStatement();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred40

    // $ANTLR start synpred50
    public final void synpred50_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2772:2: ( ruleNamedArgument )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:2772:2: ruleNamedArgument
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }
        pushFollow(FollowSets000.FOLLOW_ruleNamedArgument_in_synpred504836);
        ruleNamedArgument();
        _fsp--;
        if (failed) return ;

        }
    }
    // $ANTLR end synpred50

    // $ANTLR start synpred54
    public final void synpred54_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:2: ( () ( ( '?' ) ) ( ( ruleExpression ) ) ':' ( ( ruleExpression ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:2: () ( ( '?' ) ) ( ( ruleExpression ) ) ':' ( ( ruleExpression ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3018:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3019:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3037:2: ( ( '?' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3038:1: ( '?' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3038:1: ( '?' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3039:3: '?'
        {
        match(input,49,FollowSets000.FOLLOW_49_in_synpred545304); if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3058:2: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3059:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3059:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3060:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getChildrenExpressionParserRuleCall_0_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred545338);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }

        match(input,16,FollowSets000.FOLLOW_16_in_synpred545348); if (failed) return ;
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3086:1: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3087:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3087:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3088:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getExpressionAccess().getChildrenExpressionParserRuleCall_0_1_4_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred545369);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred54

    // $ANTLR start synpred57
    public final void synpred57_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:2: ( () ( ( '=' ) ) ( ( ruleExpression ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:2: () ( ( '=' ) ) ( ( ruleExpression ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3171:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3172:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3190:2: ( ( '=' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3191:1: ( '=' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3191:1: ( '=' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3192:3: '='
        {
        match(input,21,FollowSets000.FOLLOW_21_in_synpred575559); if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3211:2: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3212:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3212:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3213:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getSimpleExpressionAccess().getChildrenExpressionParserRuleCall_0_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred575593);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred57

    // $ANTLR start synpred64
    public final void synpred64_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:2: ( () ( ( ( '&&' | '||' ) ) ) ( ( ruleBooleanTerm ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:2: () ( ( ( '&&' | '||' ) ) ) ( ( ruleBooleanTerm ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3583:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3584:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3602:2: ( ( ( '&&' | '||' ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3603:1: ( ( '&&' | '||' ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3603:1: ( ( '&&' | '||' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3604:1: ( '&&' | '||' )
        {
        if ( (input.LA(1)>=52 && input.LA(1)<=53) ) {
            input.consume();
            errorRecovery=false;failed=false;
        }
        else {
            if (backtracking>0) {failed=true; return ;}
            MismatchedSetException mse =
                new MismatchedSetException(null,input);
            recoverFromMismatchedSet(input,mse,FollowSets000.FOLLOW_set_in_synpred646248);    throw mse;
        }


        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3644:2: ( ( ruleBooleanTerm ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3645:1: ( ruleBooleanTerm )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3645:1: ( ruleBooleanTerm )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3646:3: ruleBooleanTerm
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getBooleanExpressionAccess().getChildrenBooleanTermParserRuleCall_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleBooleanTerm_in_synpred646321);
        ruleBooleanTerm();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred64

    // $ANTLR start synpred70
    public final void synpred70_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:2: ( () ( ( ( '>' | '<' | '<=' | '>=' | '==' | '!=' ) ) ) ( ( ruleAdditionExpression ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:2: () ( ( ( '>' | '<' | '<=' | '>=' | '==' | '!=' ) ) ) ( ( ruleAdditionExpression ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3703:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3704:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3722:2: ( ( ( '>' | '<' | '<=' | '>=' | '==' | '!=' ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3723:1: ( ( '>' | '<' | '<=' | '>=' | '==' | '!=' ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3723:1: ( ( '>' | '<' | '<=' | '>=' | '==' | '!=' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3724:1: ( '>' | '<' | '<=' | '>=' | '==' | '!=' )
        {
        if ( (input.LA(1)>=54 && input.LA(1)<=59) ) {
            input.consume();
            errorRecovery=false;failed=false;
        }
        else {
            if (backtracking>0) {failed=true; return ;}
            MismatchedSetException mse =
                new MismatchedSetException(null,input);
            recoverFromMismatchedSet(input,mse,FollowSets000.FOLLOW_set_in_synpred706445);    throw mse;
        }


        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3836:2: ( ( ruleAdditionExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3837:1: ( ruleAdditionExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3837:1: ( ruleAdditionExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3838:3: ruleAdditionExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getBooleanTermAccess().getChildrenAdditionExpressionParserRuleCall_0_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleAdditionExpression_in_synpred706634);
        ruleAdditionExpression();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred70

    // $ANTLR start synpred73
    public final void synpred73_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:2: ( () ( ( ( '+' | '-' ) ) ) ( ( ruleMulExpression ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:2: () ( ( ( '+' | '-' ) ) ) ( ( ruleMulExpression ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3934:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3935:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3953:2: ( ( ( '+' | '-' ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3954:1: ( ( '+' | '-' ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3954:1: ( ( '+' | '-' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3955:1: ( '+' | '-' )
        {
        if ( (input.LA(1)>=60 && input.LA(1)<=61) ) {
            input.consume();
            errorRecovery=false;failed=false;
        }
        else {
            if (backtracking>0) {failed=true; return ;}
            MismatchedSetException mse =
                new MismatchedSetException(null,input);
            recoverFromMismatchedSet(input,mse,FollowSets000.FOLLOW_set_in_synpred736799);    throw mse;
        }


        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3995:2: ( ( ruleMulExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3996:1: ( ruleMulExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3996:1: ( ruleMulExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:3997:3: ruleMulExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getAdditionExpressionAccess().getChildrenMulExpressionParserRuleCall_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleMulExpression_in_synpred736872);
        ruleMulExpression();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred73

    // $ANTLR start synpred78
    public final void synpred78_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:2: ( () ( ( ( '*' | '/' | '%' | '<<' | '>>' ) ) ) ( ( ruleTerm ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:2: () ( ( ( '*' | '/' | '%' | '<<' | '>>' ) ) ) ( ( ruleTerm ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4054:2: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4055:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4073:2: ( ( ( '*' | '/' | '%' | '<<' | '>>' ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4074:1: ( ( '*' | '/' | '%' | '<<' | '>>' ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4074:1: ( ( '*' | '/' | '%' | '<<' | '>>' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4075:1: ( '*' | '/' | '%' | '<<' | '>>' )
        {
        if ( (input.LA(1)>=62 && input.LA(1)<=66) ) {
            input.consume();
            errorRecovery=false;failed=false;
        }
        else {
            if (backtracking>0) {failed=true; return ;}
            MismatchedSetException mse =
                new MismatchedSetException(null,input);
            recoverFromMismatchedSet(input,mse,FollowSets000.FOLLOW_set_in_synpred786995);    throw mse;
        }


        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4169:2: ( ( ruleTerm ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4170:1: ( ruleTerm )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4170:1: ( ruleTerm )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4171:3: ruleTerm
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getMulExpressionAccess().getChildrenTermParserRuleCall_1_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleTerm_in_synpred787155);
        ruleTerm();
        _fsp--;
        if (failed) return ;

        }


        }


        }
    }
    // $ANTLR end synpred78

    // $ANTLR start synpred80
    public final void synpred80_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:2: ( ( () ( ( '.' ) ) ( ( ruleSimpleTerm ) ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:2: ( () ( ( '.' ) ) ( ( ruleSimpleTerm ) ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:2: ( () ( ( '.' ) ) ( ( ruleSimpleTerm ) ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:3: () ( ( '.' ) ) ( ( ruleSimpleTerm ) )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4323:3: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4324:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4342:2: ( ( '.' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4343:1: ( '.' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4343:1: ( '.' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4344:3: '.'
        {
        match(input,68,FollowSets000.FOLLOW_68_in_synpred807451); if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4363:2: ( ( ruleSimpleTerm ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4364:1: ( ruleSimpleTerm )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4364:1: ( ruleSimpleTerm )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4365:3: ruleSimpleTerm
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenSimpleTermParserRuleCall_1_0_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleSimpleTerm_in_synpred807485);
        ruleSimpleTerm();
        _fsp--;
        if (failed) return ;

        }


        }


        }


        }
    }
    // $ANTLR end synpred80

    // $ANTLR start synpred83
    public final void synpred83_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:6: ( ( () ( ( '(' ) ) ( ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )* )? ')' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:6: ( () ( ( '(' ) ) ( ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )* )? ')' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:6: ( () ( ( '(' ) ) ( ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )* )? ')' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:7: () ( ( '(' ) ) ( ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )* )? ')'
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4388:7: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4389:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4407:2: ( ( '(' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4408:1: ( '(' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4408:1: ( '(' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4409:3: '('
        {
        match(input,17,FollowSets000.FOLLOW_17_in_synpred837523); if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:2: ( ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )* )?
        int alt95=2;
        int LA95_0 = input.LA(1);

        if ( ((LA95_0>=RULE_ID && LA95_0<=RULE_INT)||LA95_0==17||LA95_0==25||(LA95_0>=33 && LA95_0<=34)||(LA95_0>=50 && LA95_0<=51)||LA95_0==67||(LA95_0>=71 && LA95_0<=80)||(LA95_0>=87 && LA95_0<=88)) ) {
            alt95=1;
        }
        switch (alt95) {
            case 1 :
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:3: ( ( ruleExpression ) ) ( ',' ( ( ruleExpression ) ) )*
                {
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4428:3: ( ( ruleExpression ) )
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4429:1: ( ruleExpression )
                {
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4429:1: ( ruleExpression )
                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4430:3: ruleExpression
                {
                if ( backtracking==0 ) {
                   
                  	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_0_0(), currentNode); 
                  	    
                }
                pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred837558);
                ruleExpression();
                _fsp--;
                if (failed) return ;

                }


                }

                // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4452:2: ( ',' ( ( ruleExpression ) ) )*
                loop94:
                do {
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( (LA94_0==18) ) {
                        alt94=1;
                    }


                    switch (alt94) {
                	case 1 :
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4452:4: ',' ( ( ruleExpression ) )
                	    {
                	    match(input,18,FollowSets000.FOLLOW_18_in_synpred837569); if (failed) return ;
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4456:1: ( ( ruleExpression ) )
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4457:1: ( ruleExpression )
                	    {
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4457:1: ( ruleExpression )
                	    // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4458:3: ruleExpression
                	    {
                	    if ( backtracking==0 ) {
                	       
                	      	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_1_2_1_1_0(), currentNode); 
                	      	    
                	    }
                	    pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred837590);
                	    ruleExpression();
                	    _fsp--;
                	    if (failed) return ;

                	    }


                	    }


                	    }
                	    break;

                	default :
                	    break loop94;
                    }
                } while (true);


                }
                break;

        }

        match(input,19,FollowSets000.FOLLOW_19_in_synpred837604); if (failed) return ;

        }


        }
    }
    // $ANTLR end synpred83

    // $ANTLR start synpred84
    public final void synpred84_fragment() throws RecognitionException {   
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:6: ( ( () ( ( '[' ) ) ( ( ruleExpression ) ) ']' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:6: ( () ( ( '[' ) ) ( ( ruleExpression ) ) ']' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:6: ( () ( ( '[' ) ) ( ( ruleExpression ) ) ']' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:7: () ( ( '[' ) ) ( ( ruleExpression ) ) ']'
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4485:7: ()
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4486:2: 
        {
        if ( backtracking==0 ) {
           
          	  /* */ 
          	
        }

        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4504:2: ( ( '[' ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4505:1: ( '[' )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4505:1: ( '[' )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4506:3: '['
        {
        match(input,69,FollowSets000.FOLLOW_69_in_synpred847642); if (failed) return ;

        }


        }

        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4525:2: ( ( ruleExpression ) )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4526:1: ( ruleExpression )
        {
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4526:1: ( ruleExpression )
        // ../spynx.desl.parser/src-gen/spynx/parser/antlr/internal/InternalDesl.g:4527:3: ruleExpression
        {
        if ( backtracking==0 ) {
           
          	        currentNode=createCompositeNode(grammarAccess.getComplexTermAccess().getChildrenExpressionParserRuleCall_1_2_2_0(), currentNode); 
          	    
        }
        pushFollow(FollowSets000.FOLLOW_ruleExpression_in_synpred847676);
        ruleExpression();
        _fsp--;
        if (failed) return ;

        }


        }

        match(input,70,FollowSets000.FOLLOW_70_in_synpred847686); if (failed) return ;

        }


        }
    }
    // $ANTLR end synpred84

    public final boolean synpred70() {
        backtracking++;
        int start = input.mark();
        try {
            synpred70_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred80() {
        backtracking++;
        int start = input.mark();
        try {
            synpred80_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred33() {
        backtracking++;
        int start = input.mark();
        try {
            synpred33_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred32() {
        backtracking++;
        int start = input.mark();
        try {
            synpred32_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred83() {
        backtracking++;
        int start = input.mark();
        try {
            synpred83_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred57() {
        backtracking++;
        int start = input.mark();
        try {
            synpred57_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred84() {
        backtracking++;
        int start = input.mark();
        try {
            synpred84_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred18() {
        backtracking++;
        int start = input.mark();
        try {
            synpred18_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred73() {
        backtracking++;
        int start = input.mark();
        try {
            synpred73_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred29() {
        backtracking++;
        int start = input.mark();
        try {
            synpred29_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred54() {
        backtracking++;
        int start = input.mark();
        try {
            synpred54_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred78() {
        backtracking++;
        int start = input.mark();
        try {
            synpred78_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred64() {
        backtracking++;
        int start = input.mark();
        try {
            synpred64_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred50() {
        backtracking++;
        int start = input.mark();
        try {
            synpred50_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred31() {
        backtracking++;
        int start = input.mark();
        try {
            synpred31_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred40() {
        backtracking++;
        int start = input.mark();
        try {
            synpred40_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred30() {
        backtracking++;
        int start = input.mark();
        try {
            synpred30_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred25() {
        backtracking++;
        int start = input.mark();
        try {
            synpred25_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred26() {
        backtracking++;
        int start = input.mark();
        try {
            synpred26_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred10() {
        backtracking++;
        int start = input.mark();
        try {
            synpred10_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }
    public final boolean synpred22() {
        backtracking++;
        int start = input.mark();
        try {
            synpred22_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !failed;
        input.rewind(start);
        backtracking--;
        failed=false;
        return success;
    }


 

    
    private static class FollowSets000 {
        public static final BitSet FOLLOW_ruleProgram_in_entryRuleProgram81 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProgram91 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_12_in_ruleProgram126 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleProgram143 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleProgram158 = new BitSet(new long[]{0x000000000010C002L,0x0000000000320000L});
        public static final BitSet FOLLOW_ruleImportStatement_in_ruleProgram180 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleProgram190 = new BitSet(new long[]{0x000000000010C002L,0x0000000000320000L});
        public static final BitSet FOLLOW_ruleDeclaration_in_ruleProgram213 = new BitSet(new long[]{0x0000000000108002L,0x0000000000320000L});
        public static final BitSet FOLLOW_ruleDeclaration_in_entryRuleDeclaration250 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDeclaration260 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_ruleDeclaration310 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxies_in_ruleDeclaration340 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleConstantDeclaration_in_ruleDeclaration370 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxies_in_entryRuleProxies405 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProxies415 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternMatchInfoProxy_in_ruleProxies465 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocatorProxy_in_ruleProxies495 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTypeProxy_in_ruleProxies525 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleImportStatement_in_entryRuleImportStatement560 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleImportStatement570 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleInclusionDeclaration_in_ruleImportStatement619 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleInclusionDeclaration_in_entryRuleInclusionDeclaration653 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleInclusionDeclaration663 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_14_in_ruleInclusionDeclaration698 = new BitSet(new long[]{0x0000000000000020L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleInclusionDeclaration715 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_entryRulePatternDeclaration756 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternDeclaration766 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_15_in_rulePatternDeclaration801 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_rulePatternDeclaration818 = new BitSet(new long[]{0x0000000000030000L});
        public static final BitSet FOLLOW_16_in_rulePatternDeclaration834 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_rulePatternDeclaration861 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_rulePatternDeclaration873 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_rulePatternDeclaration895 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_rulePatternDeclaration906 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_rulePatternDeclaration927 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_rulePatternDeclaration941 = new BitSet(new long[]{0x0000000002000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_rulePatternDeclaration962 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleConstantDeclaration_in_entryRuleConstantDeclaration999 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleConstantDeclaration1009 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_20_in_ruleConstantDeclaration1044 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleConstantDeclaration1061 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_ruleConstantDeclaration1076 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleConstantDeclaration1097 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleConstantDeclaration1107 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatement_in_entryRuleStatement1143 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleStatement1153 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_ruleStatement1203 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleStatement1234 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleStatement1243 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocateStatement_in_ruleStatement1276 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleStatement1285 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleIfStatement_in_ruleStatement1317 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_ruleStatement1348 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleStatement1357 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLoopStatement_in_ruleStatement1389 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleStatement1420 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleStatement1429 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBlockSpecialStatement_in_entryRuleBlockSpecialStatement1466 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBlockSpecialStatement1476 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_22_in_ruleBlockSpecialStatement1533 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_23_in_ruleBlockSpecialStatement1562 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleReturnStatement_in_entryRuleReturnStatement1614 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleReturnStatement1624 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_24_in_ruleReturnStatement1667 = new BitSet(new long[]{0x000C0006020200F2L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleReturnStatement1701 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_entryRuleEmptyStatement1738 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleEmptyStatement1748 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_entryRuleCompositeStatement1819 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleCompositeStatement1829 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_25_in_ruleCompositeStatement1876 = new BitSet(new long[]{0x0004A8067FC220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleCompositeStatement1899 = new BitSet(new long[]{0x0004A8067FC220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleReturnStatement_in_ruleCompositeStatement1918 = new BitSet(new long[]{0x0004A8067FC220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleBlockSpecialStatement_in_ruleCompositeStatement1937 = new BitSet(new long[]{0x0004A8067FC220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_26_in_ruleCompositeStatement1951 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_entryRuleDeclarationStatement1987 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDeclarationStatement1997 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_27_in_ruleDeclarationStatement2032 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleVarEntry_in_ruleDeclarationStatement2053 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_ruleDeclarationStatement2064 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleVarEntry_in_ruleDeclarationStatement2085 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleVarEntry_in_entryRuleVarEntry2123 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleVarEntry2133 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleVarEntry2175 = new BitSet(new long[]{0x0000000000200002L});
        public static final BitSet FOLLOW_21_in_ruleVarEntry2191 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleVarEntry2212 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocateStatement_in_entryRuleLocateStatement2256 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLocateStatement2266 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_28_in_ruleLocateStatement2313 = new BitSet(new long[]{0x0000000020000000L});
        public static final BitSet FOLLOW_29_in_ruleLocateStatement2337 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleUnamedArgument_in_ruleLocateStatement2358 = new BitSet(new long[]{0x00000001C0000000L});
        public static final BitSet FOLLOW_30_in_ruleLocateStatement2411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
        public static final BitSet FOLLOW_rulePOSITION_CONSTANTS_in_ruleLocateStatement2432 = new BitSet(new long[]{0x00000001C0000002L});
        public static final BitSet FOLLOW_31_in_ruleLocateStatement2494 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_ruleLocateStatement2504 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleLocateStatement2525 = new BitSet(new long[]{0x00000001C0000002L});
        public static final BitSet FOLLOW_32_in_ruleLocateStatement2587 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleLocateStatement2614 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleLocateStatement2624 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLocateStatement2646 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_ruleLocateStatement2657 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleLocateStatement2678 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_ruleLocateStatement2692 = new BitSet(new long[]{0x00000001C0000002L});
        public static final BitSet FOLLOW_ruleMatchStatement_in_entryRuleMatchStatement2778 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMatchStatement2788 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_33_in_ruleMatchStatement2823 = new BitSet(new long[]{0x0004000000008010L});
        public static final BitSet FOLLOW_rulePatternExpression_in_ruleMatchStatement2844 = new BitSet(new long[]{0x0000000C00000002L});
        public static final BitSet FOLLOW_34_in_ruleMatchStatement2855 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleMatchStatement2876 = new BitSet(new long[]{0x0000000800040002L});
        public static final BitSet FOLLOW_18_in_ruleMatchStatement2887 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleMatchStatement2908 = new BitSet(new long[]{0x0000000800040002L});
        public static final BitSet FOLLOW_35_in_ruleMatchStatement2923 = new BitSet(new long[]{0x000007F000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_ruleMatchStatement2944 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_ruleMatchStatement2955 = new BitSet(new long[]{0x000007F000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_ruleMatchStatement2976 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleMatchOption_in_entryRuleMatchOption3016 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMatchOption3026 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_36_in_ruleMatchOption3071 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_37_in_ruleMatchOption3100 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_38_in_ruleMatchOption3129 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_39_in_ruleMatchOption3158 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_40_in_ruleMatchOption3187 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_41_in_ruleMatchOption3216 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_42_in_ruleMatchOption3245 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_ruleMatchOption3271 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleMatchOption3292 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleIfStatement_in_entryRuleIfStatement3328 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleIfStatement3338 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_43_in_ruleIfStatement3373 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleIfStatement3383 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleIfStatement3404 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleIfStatement3414 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleIfStatement3435 = new BitSet(new long[]{0x0000100000000002L});
        public static final BitSet FOLLOW_44_in_ruleIfStatement3446 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleIfStatement3467 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLoopStatement_in_entryRuleLoopStatement3505 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLoopStatement3515 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForStatement_in_ruleLoopStatement3565 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForEachStatement_in_ruleLoopStatement3595 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleWhileStatement_in_ruleLoopStatement3625 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForStatement_in_entryRuleForStatement3660 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForStatement3670 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_30_in_ruleForStatement3713 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleForStatement3736 = new BitSet(new long[]{0x00040004080220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleForInitStatement_in_ruleForStatement3757 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleForStatement3767 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleForStatement3788 = new BitSet(new long[]{0x0000000000002000L});
        public static final BitSet FOLLOW_13_in_ruleForStatement3798 = new BitSet(new long[]{0x00040004000A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleForPostStatement_in_ruleForStatement3819 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleForStatement3829 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleForStatement3850 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForEachStatement_in_entryRuleForEachStatement3886 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForEachStatement3896 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_45_in_ruleForEachStatement3939 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleForEachStatement3962 = new BitSet(new long[]{0x0000000008000000L});
        public static final BitSet FOLLOW_27_in_ruleForEachStatement3972 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleForEachStatement3989 = new BitSet(new long[]{0x0000400000000000L});
        public static final BitSet FOLLOW_46_in_ruleForEachStatement4004 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleForEachStatement4025 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleForEachStatement4035 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleForEachStatement4056 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleWhileStatement_in_entryRuleWhileStatement4092 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleWhileStatement4102 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_47_in_ruleWhileStatement4145 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleWhileStatement4168 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleWhileStatement4189 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleWhileStatement4199 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleWhileStatement4220 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForInitStatement_in_entryRuleForInitStatement4256 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForInitStatement4266 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement4315 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForInitStatement4334 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_ruleForInitStatement4348 = new BitSet(new long[]{0x00040004080200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleDeclarationStatement_in_ruleForInitStatement4371 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForInitStatement4390 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleForInitStatement4423 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleForPostStatement_in_entryRuleForPostStatement4459 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleForPostStatement4469 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForPostStatement4516 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_ruleForPostStatement4527 = new BitSet(new long[]{0x00040004000200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_ruleForPostStatement4548 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_ruleEmptyStatement_in_ruleForPostStatement4578 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAssignStatement_in_entryRuleAssignStatement4614 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleAssignStatement4624 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleAssignStatement4674 = new BitSet(new long[]{0x0000000000200002L});
        public static final BitSet FOLLOW_21_in_ruleAssignStatement4704 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleAssignStatement4738 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArgument_in_entryRuleArgument4776 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleArgument4786 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleNamedArgument_in_ruleArgument4836 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleUnamedArgument_in_ruleArgument4866 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleUnamedArgument_in_entryRuleUnamedArgument4901 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleUnamedArgument4911 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleUnamedArgument4956 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleNamedArgument_in_entryRuleNamedArgument4991 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleNamedArgument5001 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleNamedArgument5043 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_ruleNamedArgument5058 = new BitSet(new long[]{0x000D0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleNamedArgument5080 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_48_in_ruleNamedArgument5097 = new BitSet(new long[]{0x0000000002000000L});
        public static final BitSet FOLLOW_25_in_ruleNamedArgument5107 = new BitSet(new long[]{0x000C0006060200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleNamedArgument5129 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_18_in_ruleNamedArgument5140 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleNamedArgument5161 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_26_in_ruleNamedArgument5175 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression5213 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleExpression5223 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_ruleExpression5274 = new BitSet(new long[]{0x0002000000000002L});
        public static final BitSet FOLLOW_49_in_ruleExpression5304 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleExpression5338 = new BitSet(new long[]{0x0000000000010000L});
        public static final BitSet FOLLOW_16_in_ruleExpression5348 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleExpression5369 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArrayExpression_in_ruleExpression5403 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatementExpression_in_ruleExpression5433 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_entryRuleSimpleExpression5468 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSimpleExpression5478 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_ruleSimpleExpression5529 = new BitSet(new long[]{0x0000000000200002L});
        public static final BitSet FOLLOW_21_in_ruleSimpleExpression5559 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleExpression5593 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMatchStatement_in_ruleSimpleExpression5627 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleArrayExpression_in_entryRuleArrayExpression5662 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleArrayExpression5672 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_25_in_ruleArrayExpression5727 = new BitSet(new long[]{0x000C0006060200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleArrayExpression5762 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_18_in_ruleArrayExpression5773 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleArrayExpression5794 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_26_in_ruleArrayExpression5808 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternExpression_in_entryRulePatternExpression5844 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternExpression5854 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternDeclaration_in_rulePatternExpression5900 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_rulePatternExpression5933 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_50_in_rulePatternExpression5958 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_rulePatternExpression5981 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_rulePatternExpression6002 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_rulePatternExpression6012 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleStatementExpression_in_entryRuleStatementExpression6049 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleStatementExpression6059 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_51_in_ruleStatementExpression6106 = new BitSet(new long[]{0x0000000002000000L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_ruleStatementExpression6127 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanExpression_in_entryRuleBooleanExpression6163 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanExpression6173 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression6223 = new BitSet(new long[]{0x0030000000000002L});
        public static final BitSet FOLLOW_52_in_ruleBooleanExpression6255 = new BitSet(new long[]{0x00040004000200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_53_in_ruleBooleanExpression6284 = new BitSet(new long[]{0x00040004000200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_ruleBooleanExpression6321 = new BitSet(new long[]{0x0030000000000002L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_entryRuleBooleanTerm6359 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBooleanTerm6369 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm6420 = new BitSet(new long[]{0x0FC0000000000002L});
        public static final BitSet FOLLOW_54_in_ruleBooleanTerm6452 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_55_in_ruleBooleanTerm6481 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_56_in_ruleBooleanTerm6510 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_57_in_ruleBooleanTerm6539 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_58_in_ruleBooleanTerm6568 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_59_in_ruleBooleanTerm6597 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_ruleBooleanTerm6634 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleBOOLEAN_CONSTANTS_in_ruleBooleanTerm6677 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_entryRuleAdditionExpression6714 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleAdditionExpression6724 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleMulExpression_in_ruleAdditionExpression6774 = new BitSet(new long[]{0x3000000000000002L});
        public static final BitSet FOLLOW_60_in_ruleAdditionExpression6806 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_61_in_ruleAdditionExpression6835 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleMulExpression_in_ruleAdditionExpression6872 = new BitSet(new long[]{0x3000000000000002L});
        public static final BitSet FOLLOW_ruleMulExpression_in_entryRuleMulExpression6910 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleMulExpression6920 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleMulExpression6970 = new BitSet(new long[]{0xC000000000000002L,0x0000000000000007L});
        public static final BitSet FOLLOW_62_in_ruleMulExpression7002 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_63_in_ruleMulExpression7031 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_64_in_ruleMulExpression7060 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_65_in_ruleMulExpression7089 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_66_in_ruleMulExpression7118 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleMulExpression7155 = new BitSet(new long[]{0xC000000000000002L,0x0000000000000007L});
        public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm7193 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleTerm7203 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_67_in_ruleTerm7259 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleTerm_in_ruleTerm7293 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleComplexTerm_in_ruleTerm7325 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleComplexTerm_in_entryRuleComplexTerm7360 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleComplexTerm7370 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_ruleComplexTerm7420 = new BitSet(new long[]{0x0000000000020002L,0x0000000000000030L});
        public static final BitSet FOLLOW_68_in_ruleComplexTerm7451 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF80L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_ruleComplexTerm7485 = new BitSet(new long[]{0x0000000000020002L,0x0000000000000030L});
        public static final BitSet FOLLOW_17_in_ruleComplexTerm7523 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm7558 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_ruleComplexTerm7569 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm7590 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_ruleComplexTerm7604 = new BitSet(new long[]{0x0000000000020002L,0x0000000000000030L});
        public static final BitSet FOLLOW_69_in_ruleComplexTerm7642 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleComplexTerm7676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
        public static final BitSet FOLLOW_70_in_ruleComplexTerm7686 = new BitSet(new long[]{0x0000000000020002L,0x0000000000000030L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_entryRuleSimpleTerm7725 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleSimpleTerm7735 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLiteralExpression_in_ruleSimpleTerm7785 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_71_in_ruleSimpleTerm7801 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleSimpleTerm7840 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleVariableTerm_in_ruleSimpleTerm7872 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_17_in_ruleSimpleTerm7888 = new BitSet(new long[]{0x00040006000200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleSimpleExpression_in_ruleSimpleTerm7913 = new BitSet(new long[]{0x0000000000080000L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm7922 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_72_in_ruleSimpleTerm7960 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_ruleSimpleTerm8000 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_ruleSimpleTerm8010 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm8032 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_ruleSimpleTerm8043 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm8064 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_ruleSimpleTerm8078 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_50_in_ruleSimpleTerm8106 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_73_in_ruleSimpleTerm8135 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_ruleSimpleTerm8172 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_74_in_ruleSimpleTerm8198 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleSimpleTerm8232 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_75_in_ruleSimpleTerm8258 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_ruleSimpleTerm8292 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_76_in_ruleSimpleTerm8318 = new BitSet(new long[]{0x0004000000008010L});
        public static final BitSet FOLLOW_rulePatternExpression_in_ruleSimpleTerm8352 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_77_in_ruleSimpleTerm8377 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleVariableTerm_in_entryRuleVariableTerm8426 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleVariableTerm8436 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleVariableTerm8479 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_78_in_ruleVariableTerm8500 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_79_in_ruleVariableTerm8529 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_80_in_ruleVariableTerm8558 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_34_in_ruleVariableTerm8587 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLiteralExpression_in_entryRuleLiteralExpression8638 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLiteralExpression8648 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_STRING_in_ruleLiteralExpression8690 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_VERBATIM_STRING_in_ruleLiteralExpression8718 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_INT_in_ruleLiteralExpression8746 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePatternMatchInfoProxy_in_entryRulePatternMatchInfoProxy8787 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePatternMatchInfoProxy8797 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_81_in_rulePatternMatchInfoProxy8832 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_rulePatternMatchInfoProxy8849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
        public static final BitSet FOLLOW_82_in_rulePatternMatchInfoProxy8864 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy8885 = new BitSet(new long[]{0x0000000400000002L,0x0000000000080000L});
        public static final BitSet FOLLOW_83_in_rulePatternMatchInfoProxy8896 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_rulePatternMatchInfoProxy8917 = new BitSet(new long[]{0x0000000400000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_rulePatternMatchInfoProxy8940 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleLocatorProxy_in_entryRuleLocatorProxy8977 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleLocatorProxy8987 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_84_in_ruleLocatorProxy9022 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleLocatorProxy9039 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
        public static final BitSet FOLLOW_82_in_ruleLocatorProxy9054 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy9075 = new BitSet(new long[]{0x0000000400000002L,0x0000000000080000L});
        public static final BitSet FOLLOW_83_in_ruleLocatorProxy9086 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleLocatorProxy9107 = new BitSet(new long[]{0x0000000400000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_ruleLocatorProxy9130 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleTypeProxy_in_entryRuleTypeProxy9167 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleTypeProxy9177 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_85_in_ruleTypeProxy9212 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleTypeProxy9229 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_ruleTypeProxy9244 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy9265 = new BitSet(new long[]{0x0000000400000002L,0x0000000000080000L});
        public static final BitSet FOLLOW_83_in_ruleTypeProxy9276 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_ruleTypeProxy9297 = new BitSet(new long[]{0x0000000400000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_ruleTypeProxy9320 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleProxyArgument_in_entryRuleProxyArgument9357 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleProxyArgument9367 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_34_in_ruleProxyArgument9414 = new BitSet(new long[]{0x0000000002000000L});
        public static final BitSet FOLLOW_25_in_ruleProxyArgument9424 = new BitSet(new long[]{0x000C0006060200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleProxyArgument9446 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_18_in_ruleProxyArgument9457 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_ruleProxyArgument9478 = new BitSet(new long[]{0x0000000004040000L});
        public static final BitSet FOLLOW_26_in_ruleProxyArgument9492 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_entryRuleQualifiedID9529 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedID9540 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedID9580 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
        public static final BitSet FOLLOW_86_in_ruleQualifiedID9599 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedID9614 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
        public static final BitSet FOLLOW_ruleDotQualifiedID_in_entryRuleDotQualifiedID9662 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleDotQualifiedID9673 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedID9713 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
        public static final BitSet FOLLOW_68_in_ruleDotQualifiedID9732 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_RULE_ID_in_ruleDotQualifiedID9747 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
        public static final BitSet FOLLOW_ruleBOOLEAN_CONSTANTS_in_entryRuleBOOLEAN_CONSTANTS9795 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRuleBOOLEAN_CONSTANTS9806 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_87_in_ruleBOOLEAN_CONSTANTS9844 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_88_in_ruleBOOLEAN_CONSTANTS9863 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_rulePOSITION_CONSTANTS_in_entryRulePOSITION_CONSTANTS9904 = new BitSet(new long[]{0x0000000000000000L});
        public static final BitSet FOLLOW_EOF_in_entryRulePOSITION_CONSTANTS9915 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_79_in_rulePOSITION_CONSTANTS9953 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_80_in_rulePOSITION_CONSTANTS9972 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleCompositeStatement_in_synpred10962 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred181701 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_18_in_synpred222064 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleVarEntry_in_synpred222085 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_30_in_synpred252411 = new BitSet(new long[]{0x0000000000000000L,0x0000000000018000L});
        public static final BitSet FOLLOW_rulePOSITION_CONSTANTS_in_synpred252432 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_31_in_synpred262494 = new BitSet(new long[]{0x0000000000200000L});
        public static final BitSet FOLLOW_21_in_synpred262504 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred262525 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_32_in_synpred292587 = new BitSet(new long[]{0x0000000000000010L});
        public static final BitSet FOLLOW_ruleQualifiedID_in_synpred292614 = new BitSet(new long[]{0x0000000000020000L});
        public static final BitSet FOLLOW_17_in_synpred292624 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_synpred292646 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_synpred292657 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_synpred292678 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_synpred292692 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_18_in_synpred302887 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_synpred302908 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_34_in_synpred312855 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_synpred312876 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_synpred312887 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleArgument_in_synpred312908 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_synpred322955 = new BitSet(new long[]{0x000007F000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_synpred322976 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_35_in_synpred332923 = new BitSet(new long[]{0x000007F000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_synpred332944 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_18_in_synpred332955 = new BitSet(new long[]{0x000007F000000000L});
        public static final BitSet FOLLOW_ruleMatchOption_in_synpred332976 = new BitSet(new long[]{0x0000000000040002L});
        public static final BitSet FOLLOW_44_in_synpred403446 = new BitSet(new long[]{0x0004A8067A0220F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleStatement_in_synpred403467 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_ruleNamedArgument_in_synpred504836 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_49_in_synpred545304 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred545338 = new BitSet(new long[]{0x0000000000010000L});
        public static final BitSet FOLLOW_16_in_synpred545348 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred545369 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_21_in_synpred575559 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred575593 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_set_in_synpred646248 = new BitSet(new long[]{0x00040004000200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleBooleanTerm_in_synpred646321 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_set_in_synpred706445 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleAdditionExpression_in_synpred706634 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_set_in_synpred736799 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleMulExpression_in_synpred736872 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_set_in_synpred786995 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF88L});
        public static final BitSet FOLLOW_ruleTerm_in_synpred787155 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_68_in_synpred807451 = new BitSet(new long[]{0x00040004000200F0L,0x000000000001FF80L});
        public static final BitSet FOLLOW_ruleSimpleTerm_in_synpred807485 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_17_in_synpred837523 = new BitSet(new long[]{0x000C0006020A00F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred837558 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_18_in_synpred837569 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred837590 = new BitSet(new long[]{0x00000000000C0000L});
        public static final BitSet FOLLOW_19_in_synpred837604 = new BitSet(new long[]{0x0000000000000002L});
        public static final BitSet FOLLOW_69_in_synpred847642 = new BitSet(new long[]{0x000C0006020200F0L,0x000000000181FF88L});
        public static final BitSet FOLLOW_ruleExpression_in_synpred847676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
        public static final BitSet FOLLOW_70_in_synpred847686 = new BitSet(new long[]{0x0000000000000002L});
    }


}